记录编号 140949 评测结果 AAAAAAAAAA
题目名称 [NOIP 2014PJ]螺旋矩阵 最终得分 100
用户昵称 Gravatar席一鸣 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2014-11-26 21:32:24 内存使用 0.42 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
main()
{
	freopen("matrixc.in","r",stdin);
	freopen("matrixc.out","w",stdout);
	int a,b,c,d,e=0,f=0,g=0,i,n,o=0,s=0,u=0,x[30001]={0},y[30001]={0};
	cin>>n>>a>>b;
	x[1]=1;
	if(n%2==1)
	{
		u=n;
		o=2;
	    for(i=2;i<=n/2+1;i++)
	    {
		    x[i]=x[i-1]+(u-1)*4;
			u-=2;
	    }
		for(i=n/2+2;i<=n;i++)
		{
			x[i]=x[i-1]-(o-1)*4;
			o+=2;
		}
		for(i=1;i<=n/2+1;i++)
			y[i]=x[n-i+1]+(n/2+1-i)*2;
		for(i=n/2+2;i<=n;i++)
			y[i]=x[n-i+1]+(i-(n/2+1))*2;
		c=a;
		d=b;
		if(a>n/2+1)
			c=n-a+1;
		if(b>n/2+1)
			d=n-b+1;
		e=min(c,d);
		f=e;
		g=n-e+1;
		if(a==f)
			s=x[f]+b-f;
		if(a==g)
			s=x[g]+g-b;
		if(b==f)
			s=y[f]+g-a;
		if(b==g)
			s=y[g]+a-f;
		if(a==f&&b==f)
			s=x[f];
	}
	else
	{
		u=n;
		o=2;
	    for(i=2;i<=n/2;i++)
	    {
		    x[i]=x[i-1]+(u-1)*4;
			u-=2;
	    }
		x[n/2+1]=x[n/2]+2;
		for(i=n/2+2;i<=n;i++)
		{
			x[i]=x[i-1]-o*4;
			o+=2;
		}
		for(i=1;i<=n/2;i++)
			y[i]=x[n-i+1]+(n/2-i)*2+1;
		for(i=n/2+1;i<=n;i++)
			y[i]=x[n-i+1]+(i-(n/2))*2-1;
		c=a;
		d=b;
		if(a>n/2)
			c=n-a+1;
		if(b>n/2)
			d=n-b+1;
		e=min(c,d);
		f=e;
		g=n-e+1;
		if(a==f)
			s=x[f]+b-f;
		if(a==g)
			s=x[g]+g-b;
		if(b==f)
			s=y[f]+g-a;
		if(b==g)
			s=y[g]+a-f;
		if(a==f&&b==f)
			s=x[f];
	}
	cout<<s;
}