1. 程式人生 > >Codeforces ~ 1063C ~ Dwarves, Hats and Extrasensory Abilities (互動題,二分)

Codeforces ~ 1063C ~ Dwarves, Hats and Extrasensory Abilities (互動題,二分)

題意

互動題。N次,讓你每次輸出一個點的座標,然後他告訴你當前點的顏色(黑或白)。使得可以找到一條直線把黑點和白點分隔開。最終輸出這條直線過的兩個點。輸入輸出均為正數,分為為0~1e9

思路

我們把所有點擺在y=2的這條線上。輸出這條直線的時候比較方便。

每次輸出中間點,然後其實就是個二分了?黑就是小了,白就是大了。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
    int T; cin >> T;
    T--;
    cout << (int)1e9 << " " << 2 << endl; fflush(stdout);
    string s; cin >> s;
    int l = 0, r = 1e9, t = (s == "white");
    while (T--)
    {
        int m = (l + r) >> 1;
        cout << m << " " << 2 << endl; fflush(stdout);
        cin >> s;
        if ((s == "white") == t)
            r = m;
        else
            l = m;
    }
    cout << l << " " << 1 << " " << r << " " << 3 << endl;
    fflush(stdout);
    return 0;
}