#include <iostream> #include <queue> #include <cctype> #include <cstring> using namespace std; int i, j, stj, sti, nr, si, sj, fi, fj, mi, mj, fn1i, fn1j, fn2i, fn2j; bool found; queue<int> coada; int alt; int main() { si=0; sj=0; fi=199; fj=199; while(!found) { while(si<fi && sj<fj) { mi=(si+fi)/2; mj=(sj+fj)/2; cout<<mi<<" "<<mj<<"\n"; cout.flush(); cin>>alt; if(alt==0) { found=true; break; } if(alt>0) { cout<<mi-1<<" "<<mj-1<<"\n"; cin>>alt; if(alt==0) { found=true; break; } if(alt<0) { fn1i=mi; fn1j=mj; fn2i=mi-1; fn2j=mj-1; break; } fi=mi-1; fj=mj-1; } if(alt<0) { cout<<mi+1<<" "<<mj+1<<"\n"; cin>>alt; if(alt==0) { found=true; break; } if(alt>0) { fn1i=mi; fn1j=mj; fn2i=mi+1; fn2j=mj+1; break; } si=mi+1; sj=mj+1; } } if(!found) { //from fn1i, fn1j for(i=fn1i-1; i>=0; i--) { cout<<i<<" "<<fn1j<<"\n"; cout.flush(); cin>>alt; if(alt<0) break; if(alt==0) { found=true; break; } } if(found==true) break; for(i=fn1j-1; i>=0; i--) { cout<<fn1i<<" "<<i<<"\n"; cout.flush(); cin>>alt; if(alt<0) break; if(alt==0) { found=true; break; } } if(found==true) break; for(i=fn2i-1; i>=0; i--) { cout<<i<<" "<<fn2j<<"\n"; cout.flush(); cin>>alt; if(alt<0) break; if(alt==0) { found=true; break; } } if(found==true) break; for(i=fn2j-1; i>=0; i--) { cout<<fn2i<<" "<<i<<"\n"; cout.flush(); cin>>alt; if(alt<0) break; if(alt==0) { found=true; break; } } if(found==true) break; } break; } } /*coada.push(i); coada.push(j); while(!coada.empty()) { sti=coada.front(); cout<<sti<<" "; coada.pop(); stj=coada.front(); cout<<stj<<"\n"; coada.pop(); cout.flush(); cin.getline(alt, 1001); if(alt[0]=='I') continue; else { bool minus=false; if(alt[0]=='-') minus=true; nr=0; int start=1; if(minus==false) start=0; for(i=start; i<strlen(alt); i++) { if(isdigit(alt[i])) { nr=nr*10+(alt[i]-48); } } if(minus==true) { nr=nr*(-1); } if(nr==0) break; if(nr<0) { coada.push(sti+1); coada.push(stj); coada.push(sti); coada.push(stj+1); } if(nr>0) { coada.push(sti-1); coada.push(stj); coada.push(sti); coada.push(stj-1); } } } }*/