結果
問題 |
No.253 ロウソクの長さ
|
ユーザー |
![]() |
提出日時 | 2016-09-27 21:27:56 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 658 bytes |
コンパイル時間 | 832 ms |
コンパイル使用メモリ | 65,032 KB |
実行使用メモリ | 25,604 KB |
平均クエリ数 | 65.11 |
最終ジャッジ日時 | 2024-07-16 11:05:52 |
合計ジャッジ時間 | 9,195 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 36 |
ソースコード
#include <iostream> #include <algorithm> #include <vector> #include <queue> #include <cstdio> #include <set> using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) const int INF = 1e9; int ask(int Y){ cout << "? " << Y << endl; int res; cin >> res; return res; } int main(){ int l = 0; int r = INF + 1; rep(i, 50){ int mid = (l + r) / 2; if(ask(mid) == -1){//短い r = mid; }else if(ask(mid) == 1){//長い l = mid - 1; }else if(ask(mid) == 0){ printf("! %d\n", max(0, mid - 1)); return 0; } } for (int i = l - 10; i <= r; ++i){ if(ask(i) == 0){ printf("! %d\n", max(0, i - 1)); return 0; } } return 0; }