思路应该是对的,为啥样例过不了?
#include<bits/stdc++.h>
using namespace std;
int min4(int a,int b,int c,int d)
{
return min(min(a,b),min(c,d));
}
int main()
{
int n,i,j;
cin>>n>>i>>j;
int uc=i-1,rc=n-j,dc=n-i,lc=j-1;
int c=min4(uc,rc,dc,lc);
int l=n-1;
//c是所在圈前面的圈数
//l所在圈的长度
int sum=c*l-c*(c-1);
sum*=4;
int x,y;
x=y=c+1;
l=l-2*c,sum++;
int ans=0;
for(int i=1;i<=l;i++)
{
if(i==x && j==y)
ans=sum;
sum++;
y++;
}
for(int i=1;i<=l;i++)
{
if(i==x && j==y)
ans=sum;
sum++,x++;
}
for(int i=1;i<=l;i++)
{
if(i==x && j==y)
ans=sum;
sum++,y--;
}
for(int i=1;i<=l;i++)
{
if(i==x && j==y)
ans=sum;
sum++,x--;
}
if(n%2==1&&x==y&&x==n/2+1) ans=n*n;
cout<<ans<<endl;
return 0;
}