Submission #394273

#TimeUsernameProblemLanguageResultExecution timeMemory
394273KoDColors (BOI20_colors)C++17
0 / 100
1 ms200 KiB
#include <bits/stdc++.h>

using ll = long long;

bool ask(const ll x) {
    std::cout << "? " << x << std::endl;
    bool f;
    std::cin >> f;
    return f;
}

int main() {
    ll N;
    std::cin >> N;
    ll pos = 1;
    {
        int c = 0;
        ll x = N - 1;
        while (x > 1) {
            x /= 2;
            pos += c * x;
            c = 1 - c;
        }
    }
    ll ok = N, ng = 0;
    int dir = 1;
    ask(pos);
    ll last = 0;
    while (ok - ng > 1) {
        ll md = (ok + ng) / 2;
        if ((ok + ng) % 2 == 1 and last == ng) {
            md += 1;
        }
        last = md;
        pos += dir * md;
        dir = -dir;
        (ask(pos) ? ok : ng) = md;
    }
    std::cout << "= " << ok << std::endl;
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...