This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long llong;
#ifdef imeimi
llong val = 0;
#endif
llong n, p;
set<llong> used;
int Q(llong x) {
    llong ret;
    cout << "? " << x << endl;
    if (x > n || x < 1) exit(7);
    if (used.count(x)) exit(4);
    used.insert(x);
#ifdef imeimi
    ret = (abs(p - x) >= val);
    cout << "! " << ret << endl;
#else
    cin >> ret;
#endif
    p = x;
    return ret;
}
llong solve() {
    p = -1;
    used.clear();
#ifndef imeimi
    if (n <= 64) {
        Q(1);
        for (int s = 1, e = n; s != e; ) {
            if (!Q(e)) return abs(e - s) + 1;
            swap(s, e);
            if (s < e) --e; else ++e;
        }
        return 1;
    }
#endif
    llong L = 0, R = 0, x = 0, o = 0;
    llong s = 1, e = n;
    while (s < e) {
        llong m = (s + e - 1) / 2;
        if (o ^= 1) R = max(R, x += m);
        else L = min(L, x -= m);
        s = m + 1;
    }
    if (R - L + 1 > n) exit(6);
    x = 1 - L, o = 0;
    s = 1, e = n;
    Q(x);
    while (s < e) {
        llong m = (s + e - 1) / 2;
        llong ret;
        if (o ^= 1) ret = Q(x += m);
        else ret = Q(x -= m);
        if (ret) e = m;
        else s = m + 1;
    }
    return s;
}
int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
#ifdef imeimi
    for (int i = 1; i <= 100; ++i) {
        for (int j = 1; j <= i; ++j) {
            n = i;
            val = j;
            if (j != solve()) exit(9);
        }
    }
#endif
    int T = 1;
    while (T--) {
        cin >> n;
        llong ret = solve();
        cout << "= " << ret << endl;
    }
    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... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |