题意
交互题。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;
}