#include <bits/stdc++.h>
using namespace std;
long long i, j, l, r, mid, p, q, k, t, n, m, a, b, c, d, ans, cnt, res;
const long long mod = 999993143, mod2 = 999993469;
string s;
bool check;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
a = 1;
b = n;
c = n / 2;
l = 0;
r = c - 1;
t = -1;
while (l <= r && a < b){
mid = (l + r) / 2;
if (n % 2 == 1 && mid == c - 1){
cout << "? " << n << endl;
cin >> d;
if (t != -1){
if (d == 0){
a = max(a, abs(n - t) + 1);
}
else{
b = min(b, abs(n - t));
}
}
t = n;
cout << "? " << 1 << endl;
cin >> d;
if (t != -1){
if (d == 0){
a = max(a, abs(1 - t) + 1);
}
else{
b = min(b, abs(1 - t));
}
}
t = 1;
cout << "? " << n - 1 << endl;
cin >> d;
if (t != -1){
if (d == 0){
a = max(a, abs((n - 1) - t) + 1);
}
else{
b = min(b, abs((n - 1) - t));
}
}
break;
}
else{
cout << "? " << c - mid << endl;
cin >> d;
if (t != -1){
if (d == 0){
a = max(a, abs((c - mid) - t) + 1);
}
else{
b = min(b, abs((c - mid) - t));
}
}
t = c - mid;
cout << "? " << c + mid + 1 << endl;
cin >> d;
if (t != -1){
if (d == 0){
a = max(a, abs((c + mid + 1) - t) + 1);
l = mid + 1;
}
else{
b = min(b, abs((c + mid + 1) - t));
r = mid - 1;
}
}
t = c + mid + 1;
}
}
cout << "= " << a << endl;
// cout << "= " << b << endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |