結果

問題 No.253 ロウソクの長さ
ユーザー tottoripaper
提出日時 2015-07-25 00:19:19
言語 C++11
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 1,049 bytes
コンパイル時間 505 ms
コンパイル使用メモリ 55,976 KB
実行使用メモリ 25,604 KB
平均クエリ数 59.22
最終ジャッジ日時 2024-07-16 05:05:21
合計ジャッジ時間 5,452 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 14 WA * 22
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>

int ask(int n){
    std::cout << "? " << n << std::endl;
    int res = 0;
    std::cin >> res;
    return res;
}

void answer(int n){
    std::cout << "! " << n << std::endl;
}

int main(){
    int lb = 10, ub = 1000000001;
    int res;
    
    std::cout << "? 100" << std::endl;
    std::cin >> res;

    if(res == 0){
        answer(res);
        return 0;
    }else if(res == -1){
        for(int i=1;i<100;i++){
            res = ask(0);
            if(res == 0){
                answer(i);
                return 0;
            }
        }
    }else{
        for(int i=0;i<100;i++){
            int mid = (lb + ub) / 2;
            std::cout << "? " << mid << std::endl;
            int res;
            std::cin >> res;
            if(res == 0){
                std::cout << "! " << (mid + i) << std::endl;
                return 0;
            }else if(res == 1){
                lb = mid;
            }else{
                ub = mid;
            }
        }
        lb = std::max(0, lb-1);
        ub = ub - 1;
    }
}
0