代码:
#include<bits/stdc++.h>
using namespace std;
int n , l , r , tmp1 , tmp2 , u , v;
int main()
{
cin >> n;
srand(time(0));
l = 1;
r = n;
while(1)
{
if(l == r)
{
cout << "! " << l << endl;
return 0;
}
tmp1 = rand() * rand() % (r - l) + l;
tmp2 = rand() * rand() % (r - l) + l;
if(tmp1 > tmp2)
{
swap(tmp1 , tmp2);
}
cout << "? " << tmp1 << ' ' << tmp2 << endl;
cin >> u >> v;
if(v == 1)
{
cout << "! " << u << endl;
return 0;
}
else if(v == 0)
{
l = u + 1;
}
else
{
r = u - 1;
}
}
return 0;
}
除了第一个点全部返回 your input sin't legal.,问题出在哪了?
玄关(小号)。