#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define int long long
#define pb push_back
#define f first
#define s second
#define ld long double
#define sz(x) static_cast<int>((x).size())
#define i5 tuple<int,int,int,int,int>
#define all(x) x.begin(), x.end()
#define iii tuple<int,int,int>
#define eb emplace_back
signed main(){
int n;cin>>n;
int ans=1;
auto ask=[&](int x, int l)->bool{
int zuo, you;
if(l%2==0) zuo=x-l/2, you=x+l/2-1;
else zuo=x-l/2, you=x+l/2;
if(zuo < 1 or you > n)return 0;
bool res; cout<<"? "<<zuo<<" "<<you<<endl;
cin>>res;
return res;
};
for(int i=2;i<=n;i++){
while(true){
if(ask(i, ans+2))ans=ans+2;
else if(ask(i, ans+1))ans=ans+1;
else break;
}
}
cout<<"! " <<ans<<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... |