#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
template<typename T>
using vec = vector<T>;
int last1 = 0,last2 = 0,c = INT_MAX;
int query(int sorgu){
if (last1 == 0) last1 = sorgu;
else {
last2 = last1;
last1 = sorgu;
}
cout << "? " << sorgu << endl;
cout.flush();
int q; cin >> q;
if (q && last2 != 0) c = min(c,abs(last1 - last2));
return q;
}
void print(int l,int r){
while (l < r){
query(l);
query(r);
l++; r--;
}
if (l == r) query(l);
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int n; cin >> n;
int mid = (n + 1) / 2;
query(mid);
bool ok = query(1);
if (ok == 1){
query(mid - 1);
int l = 2, r = mid - 2;
while (l < r){
query(l);
query(r);
l++; r--;
}
if (l == r) query(l);
}
else {
query(n);
int l = 2, r = n-1;
while (l < mid && r > mid){
query(l);
query(r);
l++;
r--;
}
if (l < mid) query(l);
if (r > mid) query(r);
}
cout << "= " << c << endl;
cout.flush();
return 0;
}
| # | 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... |