Submission #416534

#TimeUsernameProblemLanguageResultExecution timeMemory
416534nicolaalexandraColors (BOI20_colors)C++14
100 / 100
7 ms328 KiB
#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 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...