#include #include using namespace std; int polje[200][200]; struct str{ int x[2], y[2]; }; void polnjenje(int x, int y, int n){//if v<0->n=-1; if(v>0 -> n=1 if(n > 0){ for( ; x<200; x++){ if(polje[x][y] > 0) break; for( ; y<200; y++){ if(polje[x][y]>0) break; polje[x][y] = n; } } } else{ for( ; x >= 0; x--){ if(polje[x][y] < 0) break; for( ; y >= 0; y--){ if(polje[x][y]>0) break; polje[x][y] = n; } } } return; } int main(){ int x=0, y=0, v=100; stack rek; str s, s1; s.x[0] = 0; s.x[1] = 200; s.y[0] = 0; s.y[1] = 200; for(int x1 = 0; x1 < 200; x1++) for(int y1 = 0; y1 < 200; y1++) polje[x][y] = 0; rek.push(s); while(!rek.empty()){ s = rek.top(); rek.pop(); if(s.x[0] == s.x[1]-1 && s.y[0] == s.y[1]-1){ for(int x = s.x[0]; x != s.x[1]; x++) for(int y = s.y[0]; y != s.y[1]; y++) if(polje[x][y] != 0){ printf("%i %i\n", x, y); fflush(stdout); scanf("%i", &v); if(v==0)return 0; if(v>0) polnjenje(x, y, 1); else polnjenje(x, y, -1); } } else{ x=(s.x[0]+s.x[1])/2; y=(s.y[0]+s.y[1])/2; printf("%i %i\n", x, y); fflush(stdout); scanf("%i", &v); if(v==0) return 0; s1 = s;//nastanejo 3 novi kvadrati s.x[0] = x; s.y[1] = y; rek.push(s); s.x[0] = s1.x[0]; s.x[1] = x; s.y[0] = y; s.y[1] = s1.y[1]; rek.push(s); if(v>0){ polnjenje(x, y, 1); s.y[0] = s1.y[0]; s.y[1] = s1.y[1]; rek.push(s); } else{ polnjenje(x, y, -1); s.x[0] = x; s.x[1] = s1.x[1]; rek.push(s); } } } return 0; }