#include #include #include #include using namespace std; string dir[] = {"top", "bottom", "left", "right"}; bool solve(vector vec, int me){ for(int i = 0; i < vec.size(); ++i){ if(vec[i] >= 2){ int temp = vec[i]; vec[i] = 1; bool f = solve(vec, 1 - me); vec[i] = temp; if(me == 1 && f){ return true; } if(me == 0 && !f){ return false; } } if(vec[i] >= 1){ int temp = vec[i]; vec[i] = 0; int f = solve(vec, 1 - me); vec[i] = temp; if(me == 1 && f){ return true; } if(me == 0 && !f){ return false; } } } return me == 0; // if(me == 1){ // return false; // } // if(me == 0){ // return true; // } } int main(){ int mx = INT_MAX, Mx = INT_MIN, my = INT_MAX, My = INT_MIN; int w, h, N; string s; map mp; mp["top"] = 0; mp["bottom"] = 1; mp["left"] = 2; mp[ "right"] = 3; cin >> h >> w >> N; int x, y; for(int i = 0; i < N; ++i){ cin >> y >> x; mx = min(mx, x); my = min(my, y); Mx = max(Mx, x); My = max(My, y); } vector vec(4); vec[0] = my - 1; vec[1] = h - My; vec[2] = mx - 1; vec[3] = w - Mx; if(solve(vec, 1) == false){ cout << "pass" << endl; cin >> s >> x; vec[mp[s]] -= x; } while(true){ for(int i = 0; i < vec.size(); ++i) { if (vec[i] >= 2) { int temp = vec[i]; vec[i] = 1; bool f = solve(vec, 0); vec[i] = temp; if (f == true) { cout << dir[i] << ' ' << vec[i] - 1 << endl; vec[i] = 1; break; } } if (vec[i] >= 1) { int temp = vec[i]; vec[i] = 0; bool f = solve(vec, 0); vec[i] = temp; if (f == true) { cout << dir[i] << ' ' << vec[i] << endl; vec[i] = 0; break; } } } cin >> s; if(s[0] == 'y'){ return 0; } cin >> x; vec[mp[s]] -= x; } return 0; }