This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
long long n,maxi,i;
int query (long long x){
    int ans;
    cout<<"? "<<x<<endl;
    cin>>ans;
    return ans;
}
int main (){
    cin>>n;
    /// incerc sa aleg optim punctul de start
    long long st = 1, dr = n-1, pas = 0, sum = 0, sum2 = n, Left = 1, Right = n;
    while (st <= dr){
        long long mid = (st+dr)>>1;
        pas++;
        if (pas % 2){
            sum2 -= mid, sum -= mid;
            Right = min (Right,sum2);
        } else {
            sum2 += mid, sum += mid;
            Left = max (Left,sum+1);
        }
        st = mid+1;
    }
    long long x = Left, c = 0;
    query(x);
    st = 1, dr = n-1, pas = 0;
    while (st <= dr){
        long long mid = (st+dr)>>1;
        pas++;
        if (pas % 2)
            x += mid;
        else x -= mid;
        int ans = query (x);
        if (!ans){
            c = mid;
            st = mid+1;
        } else dr = mid-1;
    }
    cout<<"= "<<c+1<<endl;
    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... |