Ryan123 • 2年前
#include <bits/stdc++.h>
using namespace std;
//TLE
int x,y,nx=1,ny=1,k=0,num=0;
int dirx[5]= {0,1,2,2,1};
int diry[5]= {0,-2,-1,1,2};
int step[10000];
int main()
{
cin>>x>>y;
while(1)
{
if((x-nx)>2*(y-ny))
{
cout<<-1<<'\n';
return 0;
}
if(nx==x && ny==y)
break;
k++;
if((x-nx)>2*(y-ny))
{
k=step[num];
num--;
nx-=dirx[k];
ny-=diry[k];
}
else if(k>4)
{
k=step[num];
num--;
nx-=dirx[k];
ny-=diry[k];
}
else
{
nx+=dirx[k];
ny+=diry[k];
if(nx>x || ny>y || ny<1 || nx<1)
{
nx-=dirx[k];
ny-=diry[k];
}
else if(x-nx>2*(y-ny))
{
nx-=dirx[k];
ny-=diry[k];
}
else
{
num++;
step[num]=k;
k=0;
}
}
}
for(int i=1; i<=num; i++)
cout<<step[i]<<' ';
cout<<'\n';
return 0;
}
评论: