#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class LengthOfCandle { public: int ask(int Y){ cout << "? " << Y << endl; int res; cin >> res; return res; } void solve(void) { ll u = 1E+9; ll l = 10; int t = 0; // X <= 10^9 なので最大 30 回ほどクエリを投げることになる // X = 30 以下のときは 30 回のクエリ施行中にろうそくの長さが 0 に // なってしまうことがあるので最初に特別なケースをつぶす int x = ask(90); ++t; // 90 以下なので 0 と比較しながら答えをたしかめればよい if ( x == 0 ) { cout<<"! "<<90< 0 ) l = mid+t; else u = mid+t; if (u == l) break; } cout<<"! "<solve(); delete obj; return 0; } #endif