Submission #718215

#TimeUsernameProblemLanguageResultExecution timeMemory
718215TigerpantsColors (BOI20_colors)C++17
0 / 100
0 ms208 KiB
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <map>
#include <functional>
#include <numeric>

using namespace std;

typedef long long int ll;
typedef vector<ll> vll;

ll logll(ll x) {
    for (ll logx = 0; ; (x >>= 1) && (logx++)) if (x == 0) return logx;
}

bool ask(ll p) {
    cout << "? " << p << endl;
    bool answ;
    cin >> answ;
    return answ;
}

ll N;
ll lower = 0;
ll upper;

ll P;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> N;
    upper = 2 << logll(N - 1);

    P = (N + 2) / 3;

    ask(P);

    while ((lower + 1 < upper) && (lower < N - 1)) {
        ll mid = (upper + lower) / 2;
        if (2 * P > N) P -= mid;
        else P += mid;
        if (ask(P)) {
            upper = mid;
        } else {
            lower = mid;
        }
    }

    cout << "= " << min<ll>(N, upper) << 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...