提交时间:2024-08-21 08:14:18

运行 ID: 173700

#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; }