#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll mod = 1000000007; #define rep(i,n) for(int i=0;i=0;i--) #define all(x) (x).begin(),(x).end() int main() { //x座標を決定 //y座標を固定して、マンハッタン距離が最小値となるx座標を求める。 //条件を満たすx座標が求まれば、y座標を求めることが可能。 int left = 0; int right = 100000; //距離の最大値は(0, 0)から(100000, 100000)の200000 int dmin = 200000; //最低98回試行可能。 rep(i, 98 / 2) { cout << left << " " << 0 << endl; int d1 = 0; cin >> d1; cout << right << " " << 0 << endl; int d2 = 0; cin >> d2; int mid = (left + right) / 2; if (d2 > d1) { //右端のほうが遠いので、右端を置き換え right = mid; dmin = d1; } else if (d1 > d2) { //左端のほうが遠いので、左端を置き換え left = mid; dmin = d2; } else { //左端・右端からの距離が等しいので、両端を置き換え left = right = mid; dmin = d1; } } int x = right; //y座標を求める int y = dmin; //最終回答の提出 cout << x << " " << y << endl; int d = 0; cin >> d; return 0; }