#ifdef ONLINE_JUDGE #include #else #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif using namespace std; // lambda : [] (int a, int b) -> bool { body return } // string r_str = R"(raw string)" #define mp make_pair #define mt make_tuple #define eb emplace_back #define pb push_back #define fi first #define se second #define LL long long #define ULL unsigned long long #define PI (atan(1) * 4) #define BASE 73 #define NMAX 10000 #define NMAX2 20001 #define MOD1 1000000007 #define ALL(V) (V).begin(), (V).end() #define ALLR(V) (V).rbegin(), (V).rend() #define CRLINE Duxar(__LINE__); #define SHOWME(x) cerr << __LINE__ << ": " << #x << " = " << (x) << endl; #define ENTER putchar('\n'); int dx4[] = {-1, 0, 1, 0}; int dy4[] = {0, 1, 0, -1}; int dx8[] = {-1, -1, 0, 1, 1, 1, 0, -1}; int dy8[] = {0, 1, 1, 1, 0, -1, -1, -1}; void Duxar(int _this_line) { #ifndef ONLINE_JUDGE printf("\n . . . . . . . . . . . . . Passed line - %d\n", _this_line); #endif } bool AreEqual(double a, double b) { return (fabs(a - b) < 1e-10); } template void ReadNo(T &_value) { T _sign = 1; char ch; _value = 0; while(!isdigit(ch = getchar())) { ch == '-' ? _sign = -1 : _sign = 1 ; } do { _value = _value * 10 + (ch - '0'); } while(isdigit(ch = getchar())); _value *= _sign; } template void WriteNo(T _value, char _ch = ' ') { cout << _value << _ch; } vector > mat(200, vector (200)); vector > visited(200, vector (200)); int GetValue(int x, int y) { cout << x << ' ' << y << '\n'; cout.flush(); cin >> mat[x][y]; visited[x][y] = 1; return mat[x][y]; } bool SearchZero(int x1, int y1, int x2, int y2) { int midx, midy, val; if (x1 > x2 || y1 > y2) { return false; } if (x1 == x2 && y1 == y2) { if (!visited[x1][y1]) { GetValue(x1, y1); } return mat[x1][y1] == 0; } midx = (x1 + x2) / 2; midy = (y1 + y2) / 2; if (!visited[midx][midy]) { if (GetValue(midx, midy) == 0) { return true; } } else { return false; } val = mat[midx][midy]; if (val > 0) { return SearchZero(x1, y1, midx - 1, midy - 1) || SearchZero(x1, midy, midx - 1, y2) || SearchZero(midx, y1, x2, midy - 1); } return SearchZero(midx + 1, midy + 1, x2, y2) || SearchZero(x1, midy + 1, midx, y2) || SearchZero(midx + 1, y1, x2, midy); } int main(){ string fileInput = "sum"; #ifdef INFOARENA freopen((fileInput + ".in").c_str(), "r", stdin); freopen((fileInput + ".out").c_str(), "w", stdout); #else #ifndef ONLINE_JUDGE // freopen("/Users/duxar/Workplace/Xcode Projects/Selectie/Selectie/input", "r", stdin); #endif #endif int i; SearchZero(0, 0, 199, 199); return 0; }