#define M(a,b) a<b?a:b
#define N(x) !(x%2)
a,b,c,d,i,j,x,y,**z;
f(x,y){
int n;
for(i
=x
;i
--;z
[i
]=malloc(y
*4)); b=(a=M(x/2-(x<y?0:N(x)),y/2-(x<y?0:N(y))))-(x<y?N(x):0);
c=!(d=x<y);
for(i=a,j=b;n++<x*y;){
z[i][j]=n;
// 여기부터
if(c>0&&!d&&x-i-1==j){
c=0;
d=1;
}
else if(!c&&d>0&&x-i-1-(x<y?x%2:y%2)==y-j-1){
c=-1;
d=0;
}
else if(c<0&&!d&&i+(x<y?0:N(y))==y-j-1){
c=0;
d=-1;
}
else if(!c&&d<0&&i-(x<y?N(x):0)==j){
c=1;
d=0;
}
i+=c;
j+=d;
// 여기까지
// i+=(c=????);
// j+=(d=????);
// 로 줄이고 싶음 ㅡㅡ
}
for(j
=y
;j
--;)for(i
=x
;i
--;printf("%*d%c",(int)log10(x
*y
)+1,z
[x
-i
-1][y
-j
-1],i
?32:10)); }
main
(k
){for(k
=10;k
--;scanf("%d%d",&x
,&y
),f
(x
,y
));}
I2RlZmluZSBNKGEsYikgYTxiP2E6YgojZGVmaW5lIE4oeCkgISh4JTIpCmEsYixjLGQsaSxqLHgseSwqKno7CmYoeCx5KXsKICAgIGludCBuOwogICAgej1tYWxsb2MoeCo0KTsKICAgIGZvcihpPXg7aS0tO3pbaV09bWFsbG9jKHkqNCkpOwogICAgYj0oYT1NKHgvMi0oeDx5PzA6Tih4KSkseS8yLSh4PHk/MDpOKHkpKSkpLSh4PHk/Tih4KTowKTsKICAgIGM9IShkPXg8eSk7CiAgICBmb3IoaT1hLGo9YjtuKys8eCp5Oyl7CiAgICAgICAgeltpXVtqXT1uOwogICAgICAgIC8vIOyXrOq4sOu2gO2EsAogICAgICAgIGlmKGM+MCYmIWQmJngtaS0xPT1qKXsKICAgICAgICAgICAgYz0wOwogICAgICAgICAgICBkPTE7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoIWMmJmQ+MCYmeC1pLTEtKHg8eT94JTI6eSUyKT09eS1qLTEpewogICAgICAgICAgICBjPS0xOwogICAgICAgICAgICBkPTA7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoYzwwJiYhZCYmaSsoeDx5PzA6Tih5KSk9PXktai0xKXsKICAgICAgICAgICAgYz0wOwogICAgICAgICAgICBkPS0xOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCFjJiZkPDAmJmktKHg8eT9OKHgpOjApPT1qKXsKICAgICAgICAgICAgYz0xOwogICAgICAgICAgICBkPTA7CiAgICAgICAgfQogICAgICAgIGkrPWM7CiAgICAgICAgais9ZDsKICAgICAgICAvLyDsl6zquLDquYzsp4AKICAgICAgICAvLyBpKz0oYz0/Pz8/KTsKICAgICAgICAvLyBqKz0oZD0/Pz8/KTsKICAgICAgICAvLyDroZwg7KSE7J206rOgIOyLtuydjCDjhaHjhaEKICAgIH0KICAgIGZvcihqPXk7ai0tOylmb3IoaT14O2ktLTtwcmludGYoIiUqZCVjIiwoaW50KWxvZzEwKHgqeSkrMSx6W3gtaS0xXVt5LWotMV0saT8zMjoxMCkpOwogICAgcHV0cygiIik7Cn0KbWFpbihrKXtmb3Ioaz0xMDtrLS07c2NhbmYoIiVkJWQiLCZ4LCZ5KSxmKHgseSkpO30=