結果
| 問題 | No.253 ロウソクの長さ | 
| コンテスト | |
| ユーザー |  koyumeishi | 
| 提出日時 | 2015-07-25 00:23:27 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                TLE
                                 
                            (最新) 
                                AC
                                 
                            (最初) | 
| 実行時間 | - | 
| コード長 | 896 bytes | 
| コンパイル時間 | 649 ms | 
| コンパイル使用メモリ | 73,284 KB | 
| 実行使用メモリ | 38,788 KB | 
| 最終ジャッジ日時 | 2024-07-16 20:50:04 | 
| 合計ジャッジ時間 | 7,032 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | TLE * 1 -- * 35 | 
ソースコード
#include <iostream>
#include <vector>
#include <cstdio>
#include <sstream>
#include <map>
#include <string>
#include <algorithm>
#include <queue>
#include <cmath>
#include <set>
using namespace std;
int main(){
	int x;
	cin >> x;
	bool small = false;
	{
		int res;
		cout << "? 1024" << endl;
		cerr << x-- << endl;
		cin >> res;
		if(res == 0){
			cout << "! " << 1024 << endl;
			return 0;
		}
		small = res < 0;
	}
	int lb = 0;
	int ub = small?1024:1000000001;
	int turn = 1;
	while((ub-lb) > 1){
		int mid = (0LL + lb + ub) / 2;
		cout << "? " << mid << endl;
		cerr << x-- << endl;
		int res;
		cin >> res ;
		if(res == 0){
			cout << "! " << mid + turn << endl;
			return 0;
		}
		if(res < 0){
			ub = mid;
		}else{
			lb = mid;
		}
		ub -= 1;
		lb -= 1;
		if(lb < 0) lb = 0;
		
		turn++;
	}
	cerr << lb << " " << ub << endl;
	cout << "! " << lb+turn << endl;
	return 0;
}
            
            
            
        