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 75 76 77 78 79 80 81 82 83 84 85 86
| #include<bits/stdc++.h> using namespace std;
#define MN 1005 int V; int a[MN][MN]; int b[MN],c[MN]; int k=0,K;
int Qry(int x,int y){ if(a[x][y])return a[x][y]; ++k; printf("1 %d %d\n",x,y); fflush(stdout); int res; scanf("%d",&res); if(res==V){ printf("2 %d %d\n",x,y); fflush(stdout); exit(0); } if(k==K){ puts("2 -1 -1"); fflush(stdout); exit(0); } return a[x][y]=res; }
void Rin(int u,int d,int l,int r){ int Vul=Qry(u,l); int Vdl=Qry(d,l); int Vur=Qry(u,r); int Vdr=Qry(d,r); if(Vul>V){ int x=u,y=l; while(x>=u&&x<=d&&y>=l&&y<=r){ while(y>=l&&y<=r&&Qry(x,y)>V)++y;if(y>r)--y; while(y>=l&&y<=r&&Qry(x,y)<V)--y; ++x; } x=d,y=r; while(x>=u&&x<=d&&y>=l&&y<=r){ while(y>=l&&y<=r&&Qry(x,y)>V)--y;if(y<l)++y; while(y>=l&&y<=r&&Qry(x,y)<V)++y; --x; } }else{ int x=d,y=l; while(x>=u&&x<=d&&y>=l&&y<=r){ while(y>=l&&y<=r&&Qry(x,y)>V)++y;if(y>r)--y; while(y>=l&&y<=r&&Qry(x,y)<V)--y; --x; } x=u,y=r; while(x>=u&&x<=d&&y>=l&&y<=r){ while(y>=l&&y<=r&&Qry(x,y)>V)--y;if(y<l)++y; while(y>=l&&y<=r&&Qry(x,y)<V)++y; ++x; } } }
int main(){ int n; scanf("%d%d%d",&n,&K,&V); int u=1,l=1,r=n,d=n; while(u<=d&&r>=l){ if(Qry(u,l)>V&&Qry(u,r)>V||Qry(u,l)<V&&Qry(u,r)<V){++u;continue;} if(Qry(d,l)>V&&Qry(d,r)>V||Qry(d,l)<V&&Qry(d,r)<V){--d;continue;} if(Qry(u,l)>V&&Qry(d,l)>V||Qry(u,l)<V&&Qry(d,l)<V){++l;continue;} if(Qry(u,r)>V&&Qry(d,r)>V||Qry(u,r)<V&&Qry(d,r)<V){--r;continue;} break; } if(u>d||r<l){ puts("2 -1 -1"); fflush(stdout); return 0; } Rin(u,d,l,r); puts("2 -1 -1"); fflush(stdout); return 0; }
|