Submission #1287120

#TimeUsernameProblemLanguageResultExecution timeMemory
1287120SmuggingSpunColors (BOI20_colors)C++20
9 / 100
1 ms432 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; bool ask(ll x){ cout << "? " << x << endl; int k; cin >> k; return k == 1; } ll n; namespace sub1{ void solve(){ for(int i = n, cur = 1; i > 1; i--){ if((n ^ i ^ 1) & 1){ if(!ask(cur += i - 1)){ return void(cout << "= " << i << endl); } } else if(!ask(cur -= i - 1)){ return void(cout << "= " << i << endl); } } cout << "= 1" << endl; } } namespace sub23{ void solve(){ int low = 1, high = n - 1, left = 1, right = n, ans = 1; bool parity = true; while(low <= high){ int mid = (low + high) >> 1; if(parity){ if(!ask(mid + left++)){ low = ans = mid + 1; } else{ high = mid - 1; } ask(right); } else{ if(!ask(right-- - mid)){ low = ans = mid + 1; } else{ high = mid - 1; } ask(left); } parity = !parity; } cout << "= " << ans << endl; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; ask(1); if(n <= 64){ sub1::solve(); } else if(n <= 1000000000){ sub23::solve(); } }
#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...