Submission #1033030

#TimeUsernameProblemLanguageResultExecution timeMemory
1033030goodspeed0208Colors (BOI20_colors)C++14
0 / 100
1 ms344 KiB
#include<bits/stdc++.h> using namespace std; signed main() { int n; cin >> n; set<int>st; int c; if (n == 2) { cout << "? 1" << endl; cin >> c; cout << "? 2" << endl; cin >> c; if (c == 0) cout << "= 2" << endl; else cout << "= 1" << endl; return 0; } else if (n == 3) { cout << "? 2" << endl; cin >> c; cout << "? 3" << endl; cin >> c; if (c == 1) cout << "= 1" << endl; else { cout << "? 1" << endl; cin >> c; if (c == 1) cout << "= 2" << endl; else cout << "= 3" << endl; } return 0; } int l = 2, r = n+1, t = 0, ans = n, end = 0; //if (n == 3) r = 5; cout << "? " << l << "\n"; st.insert(l); cin >> c; while (!end) { if (t) { l += 2; assert(st.find(l) == st.end()); cout << "? " << l << endl; st.insert(l); } else { r -= 2; assert(st.find(r) == st.end()); cout << "? " << r << endl; st.insert(r); } cin >> c; if (c == 0) break; else { ans = min(ans, r - l); if (ans <= 2) break; } t ^= 1; } if (c == 1) { if (ans == 2) { if (t) { assert(st.find(r-1) == st.end()); cout << "? " << r-1 << endl; } else { assert(st.find(l+1) == st.end()); cout << "? " << l+1 << endl; } cin >> c; if (c) ans = 1; } cout << "= " << ans << endl; return 0; } while (c == 0) { if (t) { r++; assert(st.find(r) == st.end()); cout << "? " << r << endl; st.insert(r); } else { l--; assert(st.find(l) == st.end()); cout << "? " << l << endl; st.insert(l); } t ^= 1; cin >> c; if (c == 1) { ans = min(ans, r - l); end = 1; } if (c == 0 && (r - l == ans-1)) { end = 1; } } cout << "= " << ans << endl; }
#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...