Submission #1275057

#TimeUsernameProblemLanguageResultExecution timeMemory
1275057rana_azkaMađioničar (COI22_madionicar)C++20
13 / 100
476 ms424 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int INF = 1e18;
const int MOD = 1e9+7;
const int MAXN = 2e5;

int n, m;
int arr[MAXN+5];

bool query(int l, int r){
    cout << "? " << l << ' ' << r << endl;
    int jury; cin >> jury;
    return jury;
}

bool cek(int target){
    for(int i = 1; i <= n - target + 1; i++){
        if(query(i, i + target - 1)) return 1;
    }

    return 0;
}

void solve(){
    cin >> n;

    int ans = 0;

    int left = 1, right = n;
    int mid;
    while(left <= right){
        mid = (left + right) / 2;

        int target = mid;
        if(target % 2 == 0) target--;
        if(cek(target)){
            ans = max(target, ans);
            left = mid + 1;
        }else{
            right = mid - 1;
        }
    }
    
    left = 2, right = n;
    mid = 0;
    while(left <= right){
        mid = (left + right) / 2;
        
        int target = mid;
        if(target % 2 == 1) target--;
        if(cek(target)){
            ans = max(target, ans);
            left = mid + 1;
        }else{
            right = mid - 1;
        }
    }

    cout << "! " << ans << endl;
}

int32_t main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int tc = 1;
    // cin >> tc;
    while(tc--){
        solve();
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...