#include <stdio.h>
#include <memory.h>
#include <malloc.h>
void buildSnailReverse(int* a, int w, int h)
{
int s=w*h,n=0,d=h>w,r=2*d+1,v[4]={1,w,-1,-w},m=(d?w:h)-1;
a+=m/2*(w+1);
for(w=(d?h:w)-m;n<s;a+=v[d])*a=++n,n>w&&!a[v[h=d+r&3]]?d=h:0;
}
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(4,4);
makeAndPrintSnail(5,5);
makeAndPrintSnail(6,6);
makeAndPrintSnail(3,10);
makeAndPrintSnail(4,10);
makeAndPrintSnail(5,10);
makeAndPrintSnail(6,10);
makeAndPrintSnail(7,10);
makeAndPrintSnail(8,10);
makeAndPrintSnail(9,10);
makeAndPrintSnail(3,11);
makeAndPrintSnail(4,11);
makeAndPrintSnail(10,3);
makeAndPrintSnail(10,4);
makeAndPrintSnail(10,5);
makeAndPrintSnail(10,6);
makeAndPrintSnail(10,7);
makeAndPrintSnail(10,8);
makeAndPrintSnail(10,9);
makeAndPrintSnail(11,3);
makeAndPrintSnail(11,4);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtZW1vcnkuaD4KI2luY2x1ZGUgPG1hbGxvYy5oPgoKdm9pZCBidWlsZFNuYWlsUmV2ZXJzZShpbnQqIGEsIGludCB3LCBpbnQgaCkKewogICAgaW50IHM9dypoLG49MCxkPWg+dyxyPTIqZCsxLHZbNF09ezEsdywtMSwtd30sbT0oZD93OmgpLTE7CiAgICBhKz1tLzIqKHcrMSk7CiAgICBmb3Iodz0oZD9oOncpLW07bjxzO2ErPXZbZF0pKmE9KytuLG4+dyYmIWFbdltoPWQrciYzXV0/ZD1oOjA7Cn0KCnZvaWQgcHJpbnRBcnJheShpbnQqIGEsIGludCB3LCBpbnQgaCkKewogICAgaW50IGksIGo7CiAgICBmb3IgKGkgPSAwOyBpIDwgaDsgKytpKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IHc7ICsraikgewogICAgICAgICAgICBwcmludGYoIiUyZCAiLCBhW2kgKiB3ICsgal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CiAgICBwcmludGYoIlxuIik7Cn0KCnZvaWQgbWFrZUFuZFByaW50U25haWwoaW50IHcsIGludCBoKQp7CiAgICBpbnQgKmE7CiAgICBhID0gKGludCopY2FsbG9jKHcgKiBoLCBzaXplb2YoaW50KSk7CiAgICBidWlsZFNuYWlsUmV2ZXJzZShhLCB3LCBoKTsKICAgIHByaW50QXJyYXkoYSwgdywgaCk7CiAgICBmcmVlKGEpOwp9CgppbnQgbWFpbigpCnsKICAgIG1ha2VBbmRQcmludFNuYWlsKDQsNCk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCg1LDUpOwogICAgbWFrZUFuZFByaW50U25haWwoNiw2KTsKCiAgICBtYWtlQW5kUHJpbnRTbmFpbCgzLDEwKTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDQsMTApOwogICAgbWFrZUFuZFByaW50U25haWwoNSwxMCk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCg2LDEwKTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDcsMTApOwogICAgbWFrZUFuZFByaW50U25haWwoOCwxMCk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCg5LDEwKTsKCiAgICBtYWtlQW5kUHJpbnRTbmFpbCgzLDExKTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDQsMTEpOwoKICAgIG1ha2VBbmRQcmludFNuYWlsKDEwLDMpOwogICAgbWFrZUFuZFByaW50U25haWwoMTAsNCk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCgxMCw1KTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDEwLDYpOwogICAgbWFrZUFuZFByaW50U25haWwoMTAsNyk7CiAgICBtYWtlQW5kUHJpbnRTbmFpbCgxMCw4KTsKICAgIG1ha2VBbmRQcmludFNuYWlsKDEwLDkpOwoKICAgIG1ha2VBbmRQcmludFNuYWlsKDExLDMpOwogICAgbWFrZUFuZFByaW50U25haWwoMTEsNCk7CiAgICByZXR1cm4gMDsKfQ==