#include <stdio.h>
#define max(a,b) (a>b?a:b)
#define abs(a) (a>0?a:-a)
//螺旋队列
int foo(int x,int y)
{
//t的值代表前面有t圈螺旋
//1坐标(0,0)为第一圈,2、3、4、5、6、7、8、9为第二圈,......
int t=max(abs(x),abs(y));
if(t==0)
return 1;
//前t圈螺旋共有m个数字
int m=1+4*t*(t-1);
int n=0; //n表示所要求的数
//判断所给的点在哪条边上
//如果t==abs(x),说明在左右边上:t==x,在右边上;t==-x,在左边上
//如果t==abs(y),说明在上下边上,t==y,在下边上;t==-y,在上边上
//根据所给的坐标(x,y),可知每条边上共2*t+1个点,
if(t==x && t!=-y ) //点在右边上(除去上端点)
{
n=m+t+y;
}
else if(t==-x) //点在左边上
{
n=m+5*t-y;
}
else if(t==-y)//在上边上
{
n=m+7*t+x;
}
else //在下边上
{
n=m+3*t-x;
}
return n;
}
void main( void )
{
int n=foo(-2,-1);
//输出坐标对应的数字
printf("%d\n",n);
}