#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define int long long
int n;
bool ask(int i, int sz){
if(i<1 || i+sz-1>n) return false;
int resp;
cout << "? " << i << ' ' << i+sz-1 << '\n' << flush;
if(!(cin >> resp)) exit(0);
return resp==1;
}
void sol(){
cin >> n;
//even sized palindromes
int ans=1;
int sz=2;
for(int i=1;i<=n;i++){
if(ask(i,sz)){
while(ask(i-1,sz+2)){
i--; sz+=2;
}
ans=max(ans,sz);
}
}
//odd sized palindromes
sz=ans;
if(sz%2==0) sz++;
for(int i=1;i<=n;i++){
if(ask(i,sz)){
while(ask(i-1,sz+2)){
i--; sz+=2;
}
ans=max(ans,sz);
}
}
cout << "! " << ans << '\n' << flush;
return;
}
signed main(){
int tc=1;
// cin >> tc;
while(tc--) sol();
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... |