Submission #1149221

#TimeUsernameProblemLanguageResultExecution timeMemory
1149221adrilenColors (BOI20_colors)C++20
0 / 100
0 ms436 KiB
//#pragma GCC optimize("O3") #include<bits/stdc++.h> using namespace std; using ll = long long; using arr = array<int, 2>; using arrr = array<int, 3>; ll last, second_last; int query(ll p) { cout << "? " << p << endl; swap(p, second_last); swap(last, second_last); int a; cin >> a; return a; } void answer(ll p) { cout << "= " << p << endl; exit(0); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll n; cin >> n; ll lower = 1, upper = n; vector<ll> sequence{1, n}; for (int i = 0; i < 64 - __builtin_clzll(n); i++) { sequence.emplace_back(sequence[i] + (1ll << i) * (i & 1 ? -1 : 1)); } reverse(sequence.begin(), sequence.end()); auto it = sequence.begin(); query(*it++); int ans; while (it != sequence.end()) { ans = query(*it++); if (ans == 0) { lower = abs(second_last - last) + 1; continue; } upper = abs(second_last - last); break; } ll mid; while (lower < upper) { mid = (lower + upper) >> 1; if (last > n / 2) ans = query(last - mid); else ans = query(last + mid); if (ans == 0) lower = abs(second_last - last) + 1; else upper = abs(second_last - last); } if (lower == upper) { answer(lower); } abort(); } /* 1000000000000000000 */
#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...