かみじょ @ 2019-01-08 12:47:43
只有56分,,
#include<bits/stdc++.h>
using namespace std;
int k,gx,gy;
void f(int sx,int sy,int ex,int ey,int n,int z)
{
if(n==1&&z!=0){cout<<sy<<' '<<sx<<' '<<z<<endl;return;}
if(n==1&&z==0)return;
int i=n/2;
if(z==0)
{
if(gx<=sx+i-1&&gx>=sx&&gy<=sy+i-1&&gy>=sy){f(sx,sy,sx+i-1,sy+i-1,i,0);f(sx+i,sy+i,ex,ey,i,1);}
else if(gx<=ex&&gx>=sx+i&&gy<=sy+i-1&&gy>=sy){f(sx+i,sy,ex,sy+i-1,i,0);f(sx,sy+i,sx+i-1,ey,i,2);}
else if(gx<=sx+i-1&&gx>=sx&&gy<=ey&&gy>=sy+i){f(sx,sy+i,sx+i-1,ey,i,0);f(sx+i,sy,ex,sy+i-1,i,3);}
else if(gx<=ex&&gx>=sx+i&&gy<=ey&&gy>=sy+i){f(sx+i,sy+i,ex,ey,i,0);f(sx,sy,sx+i-1,sy+i-1,i,4);}
}
else
{
if(z==1)
{
f(sx,sy,sx+i-1,sy+i-1,i,1);
f(sx+i,sy+i,ex,ey,i,1);
f(sx+i,sy-2*i,ex,sy-i-1,i,3);
f(sx-2*i,sy+i,sx-i-1,ey,i,2);
}
else if(z==2)
{
f(sx+i,sy,ex,sy+i-1,i,2);
f(sx,sy+i,sx+i-1,ey,i,2);
f(sx,sy-i*2,sx+i-1,sy-i-1,i,4);
f(ex+i+1,sy+i,ex+2*i,ey,i,1);
}
else if(z==3)
{
f(sx+i,sy,ex,sy+i-1,i,3);
f(sx,sy+i,sx+i-1,ey,i,3);
f(sx-i*2,sy,sx-i-1,sy+i-1,i,4);
f(sx+i,ey+i+1,ex,ey+2*i,i,1);
}
else if(z==4)
{
f(sx,sy,sx+i-1,sy+i-1,i,4);
f(sx+i,sy+i,ex,ey,i,4);
f(ex+i+1,sy,ex+2*i,sy+i-1,i,3);
f(sx,ey+i+1,sx+i-1,ey+2*i,i,2);
}
}
}
int main()
{
cin>>k>>gx>>gy;
int l=1;
for(int i=1;i<=k;i++)l*=2;
f(1,1,l,l,l,0);
}
by FallenGemini @ 2019-07-22 10:15:16
呜呜,我也是QAQ