Submission #1287221

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