#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll, ll>
#define fi first
#define sec second
#define ld long double
const int MAXN = 2e5;
const ll INF = 1e18;
const int MOD = 1e9 + 7;
void add(ll &a, ll b) { a = (a + b) % MOD; }
void sub(ll &a, ll b) { a = (a - b + MOD) % MOD; }
void mul(ll &a, ll b) { a = a * b % MOD; }
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int tc = 1;
// cin >> tc;
for(;tc--;){
ll N; cin >> N;
auto query = [&](ll l, ll r){
cout << "? " << l << " " << r << endl;
ll x; cin >> x;
return x;
};
ll lf = 1, rg = 3, odd = 1, even = 0;
for(;rg <= N;){
while(rg <= N && query(lf, rg)){
lf--, rg++;
odd += 2;
}
lf++, rg++;
}
lf = 1, rg = 2;
for(;rg <= N;){
while(rg <= N && query(lf, rg)){
lf--, rg++;
even += 2;
}
lf++, rg++;
}
cout << "! " << max(odd, even) << endl;
}
}
/*
*/
# | 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... |