#include <bits/stdc++.h> using namespace std; int n = 200; int freee = n * n; int A[500][500], S[500][500]; int getmin(int i, int j) { int m1 = S[i][j]; int m2 = S[n-1][n-1]; if(i > 0) m2 -= S[i-1][n-1]; if(j > 0) m2 -= S[n-1][j-1]; if(i > 0 && j > 0) m2 += S[i-1][j-1]; return min(m1, m2); } pair<int, int> rand_lc() { int best = -1; pair<int, int> ret; for(int i=0; i<n; i++) for(int j=0; j<n; j++) { S[i][j] = (1 - A[i][j]); if(i > 0) S[i][j] += S[i-1][j]; if(j > 0) S[i][j] += S[i][j-1]; if(i > 0 && j > 0) S[i][j] -= S[i-1][j-1]; } for(int i=0; i<n; i++) for(int j=0; j<n; j++) { if(A[i][j]) continue; int now = getmin(i, j); if(best < now) best = now, ret = {i, j}; } return ret; } int query(pair<int, int> lc) { int a; cout << lc.first << " " << lc.second << endl; cin >> a; return a; } int main() { srand(time(0)); while(true) { auto p = rand_lc(); int q = query(p); if(q == 0) return 0; if(q > 0) { for(int i=p.first; i<n; i++) for(int j=p.second; j<n; j++) { if(!A[i][j]) { freee--; A[i][j] = 1; } } } else { for(int i=0; i<=p.first; i++) for(int j=0; j<=p.second; j++) { if(!A[i][j]) { freee--; A[i][j] = 1; } } } } return 0; }