#include 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][n] - S[i-1][n] - S[n][j-1] + S[i-1][j-1]; return min(m1, m2); } pair rand_lc() { int best = -1; pair ret = {-1, -1}; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) { S[i][j] = S[i-1][j] + S[i][j-1] - S[i-1][j-1] + (1 - A[i][j]); } for(int i=1; i<=n; i++) for(int j=1; 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 lc) { int a; cout << lc.first - 1 << " " << lc.second - 1 << 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++) { A[i][j] = 1; } } else { for(int i=1; i<=p.first; i++) for(int j=1; j<=p.second; j++) { A[i][j] = 1; } } } return 0; }