1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| #include <bits/stdc++.h> using namespace std; #define INT_MAX 2147483647 int a[1100][1100];
void f(int sx,int sy,int lx,int ly,int gx,int gy) { if(sx+1==lx&&sy+1==ly) { if(a[sx][sy]!=0) cout<<lx<<' '<<ly<<' '<<1<<endl; else if(a[sx][sy+1]!=0) cout<<lx<<' '<<sy<<' '<<2<<endl; else if(a[sx+1][sy]!=0) cout<<sx<<' '<<ly<<' '<<3<<endl; else if(a[sx+1][sy+1]!=0) cout<<sx<<' '<<sy<<' '<<4<<endl; } else { int sx1=sx,sy1=sy,lx1=(sx+lx)/2,ly1=(ly+sy)/2; int sx2=sx,sy2=ly1+1,lx2=lx1,ly2=ly; int sx3=lx1+1,sy3=sy,lx3=lx,ly3=ly1; int sx4=sx3,sy4=ly1+1,lx4=lx,ly4=ly; if(gx>=sx1&&gy>=sy1&&gx<=lx1&&gy<=ly1) { a[sx4][sy4]=a[sx4-1][sy4]=a[sx4][sy4-1]=1; cout<<sx4<<' '<<sy4<<' '<<1<<endl; f(sx1,sy1,lx1,ly1,gx,gy); f(sx2,sy2,lx2,ly2,sx4-1,sy4); f(sx3,sy3,lx3,ly3,sx4,sy4-1); f(sx4,sy4,lx4,ly4,sx4,sy4); } else if(gx>=sx2&&gy>=sy2&&gx<=lx2&&gy<=ly2) { a[lx1][ly1]=a[lx1+1][ly1]=a[lx1+1][ly1+1]=2; cout<<lx1+1<<' '<<ly1<<' '<<2<<endl; f(sx1,sy1,lx1,ly1,lx1,ly1); f(sx2,sy2,lx2,ly2,gx,gy); f(sx3,sy3,lx3,ly3,lx1+1,ly1); f(sx4,sy4,lx4,ly4,lx1+1,ly1+1); } else if(gx>=sx3&&gy>=sy3&&gx<=lx3&&gy<=ly3) { a[lx1][ly1]=a[lx1][ly1+1]=a[lx1+1][ly1+1]=3; cout<<lx1<<' '<<ly1+1<<' '<<3<<endl; f(sx1,sy1,lx1,ly1,lx1,ly1); f(sx2,sy2,lx2,ly2,lx1,ly1+1); f(sx3,sy3,lx3,ly3,gx,gy); f(sx4,sy4,lx4,ly4,lx1+1,ly1+1); } else if(gx>=sx4&&gy>=sy4&&gx<=lx4&&gy<=ly4) { a[lx1][ly1]=a[lx1+1][ly1]=a[lx1][ly1+1]=4; cout<<lx1<<' '<<ly1<<' '<<4<<endl; f(sx1,sy1,lx1,ly1,lx1,ly1); f(sx2,sy2,lx2,ly2,lx1,ly1+1); f(sx3,sy3,lx3,ly3,lx1+1,ly1); f(sx4,sy4,lx4,ly4,gx,gy); } } }
int main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,gx,gy; cin>>n>>gx>>gy; a[gx][gy]=-1; f(1,1,1<<n,1<<n,gx,gy); return 0; }
|