#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
#define fi first
#define se second
const ll N=2e6+5,MOD=1e9+7,INF=1e18;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
int mx=1;
for(int i=1; i<=n; i++){
int l=1,r=min(i-1,n-i),id=0;
while(l<=r){
int mid=(l+r)/2;
cout<<"? "<<i-mid<<" "<<i+mid<<endl;
int c;cin>>c;
if(c){
l=mid+1;
id=mid;
}
else r=mid-1;
}
mx=max(mx,2*id+1);
if(n%2 && mx==n){
cout<<"! "<<mx<<endl;
return 0;
}
else if(n%2==0 && mx==n-1){
cout<<"! "<<mx<<endl;
return 0;
}
}
for(int i=1; i<n; i++){
int l=0,r=min(i-1,n-(i+1)),id=-1;
while(l<=r){
int mid=(l+r)/2;
cout<<"? "<<i-mid<<" "<<i+mid+1<<endl;
int c;cin>>c;
if(c){
l=mid+1;
id=mid;
}
else r=mid-1;
}
if(id!=-1)mx=max(mx,2*id+2);
if(n%2 && mx==n-1){
cout<<"! "<<mx<<endl;
return 0;
}
else if(n%2==0 && mx==n){
cout<<"! "<<mx<<endl;
return 0;
}
}
cout<<"! "<<mx<<endl;
}
//aabbcc
# | 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... |