Cod sursa(job #3251678)

Utilizator Vlad3108Tir Vlad Ioan Vlad3108 Data 26 octombrie 2024 14:08:16
Problema Cbinteractiv Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.54 kb
#undef LOCAL

#pragma region TEMPLATES

#include <bits/stdc++.h>
using namespace std;
typedef long long i64;
typedef unsigned long long u64;

const string file = "";
void init() {
#ifdef DEBUG
    freopen( "in.txt",  "r", stdin);
#elif LOCAL
    freopen( "in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#else
    cin.tie(0)->sync_with_stdio(0);
    if (!file.empty()) {
        freopen((file +  ".in").c_str(), "r", stdin);
        freopen((file + ".out").c_str(), "w", stdout);
    }
#endif
}

#ifndef LOCAL
    #define debug(...) 69420
    #define init_test(...) 69420
#else
void init_test(int t) {
    cerr << "\nTEST #" << t << "\n";
}
template<typename T>
void debug(T n) {
    cerr << n << "\n";
}
template<typename T, typename... Args>
void debug(T n, Args... args) {
    cerr << n << " ";
    debug(args...);
}
template<typename T>
void debug(const vector<T> &v) {
    for (const auto &it : v) {
        cerr << it << " ";
    }
    cerr << "\n";
}
#endif

void solve();
int main() {
    init();
    int t = 1;
    // cin >> t;
    for (int i = 1; i <= t; ++i) {
        init_test(i);
        solve();
    }
}

#pragma endregion TEMPLATES

void solve() {
    int N;
    cin >> N;

    int l = 1, r = N;
    while (l <= r) {
        int mid = (l + r) / 2;
        cout << "? " << mid << endl;
        bool leq;
        cin >> leq;
        if (leq) {
            r = mid - 1;
        }
        else {
            l = mid + 1;
        }
    }
    cout << "! " << l << endl;
}