제출 #1328474

#제출 시각아이디문제언어결과실행 시간메모리
1328474huoiMađioničar (COI22_madionicar)C++17
0 / 100
476 ms432 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define INF 1e18

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

void solve() {
    int n;
    cin >> n;

    auto check_odd = [&](int x) {
        for (int i = 1; i <= n; i++) {
            int l = i - x / 2;
            int r = i + x / 2;
            if (l < 1 || r > n) continue;
            if (query(l, r)) return true;
        }
        return false;
    };

    auto check_even = [&](int x) {
        for (int i = 1; i <= n; i++) {
            int l = i - x / 2 + 1;
            int r = i + x / 2;
            if (l < 1 || r > n) continue;
            if (query(l, r)) return true;
        }
        return false;
    };

    int l = 1, r = n, ans = 1;
    while (l <= r) {
        int m = (l + r) / 2;
        bool can = (m % 2 ? check_odd(m) : check_even(m));
        if (can) {
            ans = m;
            l = m + 1;
        } else {
            r = m - 1;
        }
    }
    cout << "! " << ans << endl;
}

int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    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...