Submission #1275047

#TimeUsernameProblemLanguageResultExecution timeMemory
1275047rana_azkaMađioničar (COI22_madionicar)C++20
13 / 100
476 ms1428 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;

    vector<int> odd, even;
    for(int i = 1; i <= n; i++){
        if(i % 2) odd.push_back(i);
        else even.push_back(i);
    }

    int sisa = 2e5;

    int ans = 0;
    int left = 0, right = odd.size();
    right--;
    int mid;
    while(left <= right){
        mid = (left + right) / 2;
        sisa--; if(sisa <= 0) break;
        if(cek(odd[mid])){
            ans = max(odd[mid], ans);
            left = mid + 1;
        }else{
            right = mid - 1;
        }
    }

    left = 0, right = even.size();
    right--;
    mid = 0;
    while(left <= right){
        mid = (left + right) / 2;
        sisa--; if(sisa <= 0) break;
        if(even[mid] < ans || cek(even[mid])){
            ans = max(even[mid], 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...