#include <bits/stdc++.h>
using namespace std;
#ifdef DEBUG
#include "/Users/kutay/CP/templates/debug.h"
#else
#define debug(...) void(38)
#endif
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0);
int n; cin >> n;
auto ask = [&](int p) {
cout << "? " << p << endl;
int x; cin >> x;
return x;
};
set<int> asked;
int m = (1 + n) / 2;
int l1 = 1, r1 = m;
int l2 = m, r2 = n;
ask((l1 + r1) / 2);
asked.insert((l1 + r1) / 2);
bool g = false;
int ans = 1;
while (l1 < r1 && l2 < r2) {
int m1 = (l1 + r1) / 2;
int m2 = (l2 + r2) / 2;
int ret;
if (g == false) {
if (asked.find(m2) != asked.end()) break;
ret = ask(m2);
asked.insert(m2);
} else {
if (asked.find(m1) != asked.end()) break;
ret = ask(m1);
asked.insert(m1);
}
if (g == false) { // m1
if (ret) {
ans = max(ans, abs(m2 - m1));
r1 = m1;
} else {
l1 = m1;
}
} else { // m2
if (ret) {
ans = max(ans, abs(m2 - m1));
l2 = m2;
} else {
r2 = m2;
}
}
g ^= true;
}
cout << "= " << ans << endl;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Wrong guess |
2 |
Halted |
0 ms |
0 KB |
- |