记录编号 |
140949 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2014PJ]螺旋矩阵 |
最终得分 |
100 |
用户昵称 |
席一鸣 |
是否通过 |
通过 |
代码语言 |
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;
}