結果

問題 No.253 ロウソクの長さ
ユーザー ntuda
提出日時 2025-08-02 15:24:42
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 66 ms / 2,000 ms
コード長 1,097 bytes
コンパイル時間 214 ms
コンパイル使用メモリ 82,660 KB
実行使用メモリ 71,428 KB
平均クエリ数 21.14
最終ジャッジ日時 2025-08-02 15:24:48
合計ジャッジ時間 5,600 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 36
権限があれば一括ダウンロードができます

ソースコード

diff #

cnt = 0

def ret2(x):
    print("?",x)
    return int(input())

def ret(ans,cnt,x):
    if x == ans - cnt:
        return 0
    elif x > ans - cnt:
        return -1
    else:
        return 1

def solve():
    cnt = 0
    #r = ret(ans,cnt,100)
    r = ret2(100)
    cnt += 1
    if r == 0:
        print("!",100)
        return
    elif r == -1:
        lb = 10
        ub = 100
        while ub - lb > 0:
            mid = (ub + lb) // 2
            #r = ret(ans,cnt,mid - cnt)
            r = ret2(mid-cnt)
            cnt += 1
            if r == 0:
                print("!",mid)
                return
            elif r == 1:
                lb = mid
            else:
                ub = mid
        return
    else:
        lb = 101
        ub = 10 ** 9 + 1
        while ub - lb > 0:
            mid = (ub + lb) // 2
            #r = ret(ans,cnt,mid - cnt)
            r = ret2(mid-cnt)
            cnt += 1
            if r == 0:
                print("!",mid)
                return
            elif r == 1:
                lb = mid
            else:
                ub = mid

solve()
0