#include <stdio.h>
#include <memory.h>
#include <malloc.h>
void buildSnailReverse(int* a, int w, int h)
{
int s=w*h,n=0,d=0,j,i=s-w,r=3;
int v[4]={1,w,-1,-w};
(w>h?h:w+1)%2?i=w-1,r=1:0; //a
w-h?0:w%2?i=s-1,r=3:0; //b
while(n<s) {
a[i]=s-n++;
j=i+v[d];
if(j<0||j>=s||(!d%2&&i/w!=j/w)||a[j]) d=d+r&3;
i+=v[d];
}
}
void printArray(int* a, int w, int h)
{
int i, j;
for (i = 0; i < h; ++i) {
for (j = 0; j < w; ++j) {
}
}
}
void makeAndPrintSnail(int w, int h)
{
int *a;
a
= (int*)calloc(w
* h
, sizeof(int)); buildSnailReverse(a, w, h);
printArray(a, w, h);
}
int main()
{
makeAndPrintSnail(3,3);
makeAndPrintSnail(4,4);
makeAndPrintSnail(5,5);
makeAndPrintSnail(6,6);
makeAndPrintSnail(3,10);
makeAndPrintSnail(4,10);
makeAndPrintSnail(5,10);
makeAndPrintSnail(5,11);
makeAndPrintSnail(4,11);
makeAndPrintSnail(3,11);
makeAndPrintSnail(10,3);
makeAndPrintSnail(10,4);
makeAndPrintSnail(10,5);
makeAndPrintSnail(11,5);
makeAndPrintSnail(11,4);
makeAndPrintSnail(11,3);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtZW1vcnkuaD4KI2luY2x1ZGUgPG1hbGxvYy5oPgoKdm9pZCBidWlsZFNuYWlsUmV2ZXJzZShpbnQqIGEsIGludCB3LCBpbnQgaCkKewogICAgaW50IHM9dypoLG49MCxkPTAsaixpPXMtdyxyPTM7CiAgICBpbnQgdls0XT17MSx3LC0xLC13fTsKICAgICh3Pmg/aDp3KzEpJTI/aT13LTEscj0xOjA7IC8vYQogICAgdy1oPzA6dyUyP2k9cy0xLHI9MzowOyAvL2IKICAgIHdoaWxlKG48cykgewogICAgICAgIGFbaV09cy1uKys7CiAgICAgICAgaj1pK3ZbZF07CiAgICAgICAgaWYoajwwfHxqPj1zfHwoIWQlMiYmaS93IT1qL3cpfHxhW2pdKSBkPWQrciYzOwogICAgICAgIGkrPXZbZF07CiAgICB9Cn0KCnZvaWQgcHJpbnRBcnJheShpbnQqIGEsIGludCB3LCBpbnQgaCkKewogICAgaW50IGksIGo7CiAgICBmb3IgKGkgPSAwOyBpIDwgaDsgKytpKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IHc7ICsraikgewogICAgICAgICAgICBwcmludGYoIiUyZCAiLCBhW2kgKiB3ICsgal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CiAgICBwcmludGYoIlxuIik7Cn0KCnZvaWQgbWFrZUFuZFByaW50U25haWwoaW50IHcsIGludCBoKQp7CiAgICBpbnQgKmE7CiAgICBhID0gKGludCopY2FsbG9jKHcgKiBoLCBzaXplb2YoaW50KSk7CiAgICBidWlsZFNuYWlsUmV2ZXJzZShhLCB3LCBoKTsKICAgIHByaW50QXJyYXkoYSwgdywgaCk7CiAgICBmcmVlKGEpOwp9CgppbnQgbWFpbigpCnsKICAgIG1ha2VBbmRQcmludFNuYWlsKDMsMyk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCg0LDQpOwogICAgbWFrZUFuZFByaW50U25haWwoNSw1KTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDYsNik7CgogICAgbWFrZUFuZFByaW50U25haWwoMywxMCk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCg0LDEwKTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDUsMTApOwogICAgbWFrZUFuZFByaW50U25haWwoNSwxMSk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCg0LDExKTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDMsMTEpOwoKICAgIG1ha2VBbmRQcmludFNuYWlsKDEwLDMpOwogICAgbWFrZUFuZFByaW50U25haWwoMTAsNCk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCgxMCw1KTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDExLDUpOwogICAgbWFrZUFuZFByaW50U25haWwoMTEsNCk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCgxMSwzKTsKICAgIHJldHVybiAwOwp9