Submission #1101669

#TimeUsernameProblemLanguageResultExecution timeMemory
1101669NoMercyColors (BOI20_colors)C++17
0 / 100
1 ms336 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int ask (ll x) { cout << "? " << x << endl; int res; cin >> res; return res; } int32_t main () { // ios_base::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); ll N; cin >> N; ll ind = 1, dir = 1, cur = 1; ll lo = 1, hi = N; while (lo < hi) { ll mid = (lo + hi) >> 1; if (cur + dir * mid >= 1) { cur += dir * mid; } else { ind += 1 - (cur + dir * mid); cur = 1; } lo = mid + 1; dir = -dir; } ask (ind); lo = 1; hi = N; while (lo < hi) { ll mid = (lo + hi) >> 1; // cout << lo << " " << mid << " " << hi << " " << ind << "\n"; if (ind - mid >= 1) { if (ask (ind - mid) == 1) { hi = mid; } else { lo = mid + 1; } ind = ind - mid; } else if (ind + mid <= N) { if (ask (ind + mid) == 1) { hi = mid; } else { lo = mid + 1; } ind = ind + mid; } else { if (ind - 1 >= N - ind) { if (ask(1) == 1) { hi = ind - 1; } else { lo = ind; } ind = 1; } else { if (ask(N) == 1) { hi = N - ind; } else { lo = N - ind + 1; } ind = N; } } } cout << "= " << hi << endl; }
#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...