#include "bits/stdc++.h"
//#pragma GCC optimize("O3")
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,ll>pairll;
typedef long double ld;
#define fr first
#define sc second
#define pb push_back
#define INF 100000000007
#define endl '\n'
#define MOD 998244353
#define A 31
#define N 500007
ll n;
int main(){
cin>>n;
ll x=0;
ll a=n/2+1;
ll b=a;
ll y=0;
ll l=1;
ll r=n;
for(int i=pow(2,20);i>=8;i/=2){
if(x+i<n-2){
a=max(1ll,(n-x-i)/2);
b=a+x+i;
cout<<"? "<<a<<endl;
cout.flush();
cin>>y;
cout<<"? "<<b<<endl;
cout.flush();
cin>>y;
if(y==0)x+=i;
else{
l=a+1;
r=b-1;
}
}
}
if(n<=7){
cout<<"? "<<b<<endl;
cout.flush();
cin>>y;
}
ll f=1;
while((a>l && f==1) || (b<r && f==0)){
if(f==1){
f=0;
a--;
cout<<"? "<<a<<endl;
cout.flush();
cin>>y;
if(y==0)x++;
}else{
f=1;
b++;
cout<<"? "<<b<<endl;
cout.flush();
cin>>y;
if(y==0)x++;
}
}
cout<<"= "<<x+1<<endl;
cout.flush();
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
208 KB |
OK (7 queries) |
2 |
Correct |
1 ms |
208 KB |
OK (10 queries) |
3 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
208 KB |
OK (7 queries) |
2 |
Correct |
1 ms |
208 KB |
OK (10 queries) |
3 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
208 KB |
OK (7 queries) |
2 |
Correct |
1 ms |
208 KB |
OK (10 queries) |
3 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
208 KB |
OK (7 queries) |
2 |
Correct |
1 ms |
208 KB |
OK (10 queries) |
3 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
208 KB |
OK (7 queries) |
2 |
Correct |
1 ms |
208 KB |
OK (10 queries) |
3 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
4 |
Halted |
0 ms |
0 KB |
- |