Submission #1017891

#TimeUsernameProblemLanguageResultExecution timeMemory
1017891GrayColors (BOI20_colors)C++17
43 / 100
118 ms262144 KiB
#include <cassert> #include <iostream> #include <set> #include <vector> #define ll long long #define ln "\n" #define ff first #define ss second #define ull unsigned ll #define ld long double const ll INF = 1e9; const ll MOD = 1e9+7; using namespace std; void solve(){ ll n; cin >> n; vector<ll> usd(n+1); ll l=0, r=n; vector<ll> moves; while (l+1<r) {moves.push_back((r+l)/2); l=(r+l)/2;} ll sp=1; for (ll i=moves.size()-1; i>=0; i--){ if (sp+moves[i]<=n) sp+=moves[i]; else sp-=moves[i]; } usd[sp]=1; cout << "? " << sp << endl; ll _; cin >> _; l=0, r=n; ll lp=sp; while (l+1<r){ ll mid = (l+r)/2; if (lp+mid<=n and !usd[lp+mid]){ lp=lp+mid; cout << "? " << lp << endl; }else{ if (lp-mid>=0){ lp-=mid; }else lp+=mid; cout << "? " << lp << endl; } usd[lp]=1; ll x; cin >> x; if (x) r=mid; else l=mid; } cout << "= " << r << endl; } int main(){ ll t=1; // cin >> t; while (t--) 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...