제출 #999701

#제출 시각아이디문제언어결과실행 시간메모리
999701Mr_HusanboyColors (BOI20_colors)C++17
100 / 100
2 ms664 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define all(a) (a).begin(), (a).end() long long C; set<ll> st; ll last = -1; int _query = 0; int ask(ll x){ _query++; cout << "? " << x << endl; if(st.count(x)){ cout << " Used before!" << endl; exit(0); } st.insert(x); int res; #ifdef LOCAL res = (last == -1 || llabs(x - last) >= C ? 1 : 0); #else cin >> res; #endif last = x; return res; } void out(ll x){ cout << "= " << x << endl; #ifdef LOCAL assert(x == C); cout << _query << " queries called!" << endl; #endif } void solve(){ st.clear(); _query = 0; ll n; cin >> n; #ifdef LOCAL cin >> C; #endif ll l = 0, r = n; ll cur = 1; vector<ll> q; while(r - l > 1){ ll m = (l + r) / 2; q.push_back(m); l = m; } reverse(all(q)); for(auto u : q){ if(cur + u <= n) cur += u; else cur -= u; } ask(cur); l = 0, r = n; while(r - l > 1){ ll m = (l + r) / 2; if(st.count(cur + m) || cur + m > n){ cur -= m; }else cur += m; if(ask(cur)){ r = m; }else l = m; } out(r); } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int tests = 1; #ifdef LOCAL cin >> tests; #endif while(tests --){ 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...