#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
signed main()
{
int n,i,x,L,R,M,ansev=0,ansodd=1;
cin>>n;
// fix in suatu point
for(i=1;i<=n;i++){
int lnow = max(ansev,ansodd), ld = lnow, lv = lnow;
// check odd
if(lnow&1) lv++,ld+=2;
else lv+=2,ld++;
int plus = ld/2;
while(true){
if(i-plus < 1 or i+plus > n) break;
cout<<"? "<<i-plus<<" "<<i+plus<<endl;
cin>>x;
if(x == 1) ansodd = max(ansodd,ld), plus++,ld+=2;
else break;
}
lv = max(ansodd,lv);
if(lv&1) lv++;
plus = lv/2;
while(true){
if(i-plus+1 < 1 or i+plus > n) break;
cout<<"? "<<i-plus+1<<" "<<i+plus<<endl;
cin>>x;
if(x == 1) ansev = max(ansev,lv), plus++, lv += 2;
else break;
}
}
cout<<"! "<<max(ansev,ansodd)<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |