水题,MLE1次,直接打表会爆,WA2次
就是观察找规律,然后打一个蛇形向上的表一个个累加就好,WA2次因为蛇形向上的movx movy表打错
用map就好
#include <bits/stdc++.h>
using namespace std;
const int movx[4]={-1,1,1,1};
const int movy[4]={1,1,-1,1};
typedef pair<int,int> pii;
map<pii,int>mp;
int main()
{
//freopen("a.in","r",stdin);
pii tem=make_pair(0,0);
mp[tem]=0;
int x=0,y=0;
for (int i=1;i<=5500;i++)
{
x+=movx[i%4];y+=movy[i%4];
pii tem=make_pair(x,y);
mp[tem]=i;
}
int T;
cin>>T;
while (T--)
{
int xx,yy;
cin>>xx>>yy;
pii tem=make_pair(xx,yy);
if (mp.find(tem)==mp.end())
cout<<"No Number"<<endl;
else
cout<<mp[make_pair(xx,yy)]<<endl;
}
return 0;
}