結果
問題 | No.1830 Balanced Majority |
ユーザー |
👑 |
提出日時 | 2022-09-27 12:58:07 |
言語 | Lua (LuaJit 2.1.1734355927) |
結果 |
WA
|
実行時間 | - |
コード長 | 730 bytes |
コンパイル時間 | 272 ms |
コンパイル使用メモリ | 6,948 KB |
実行使用メモリ | 25,220 KB |
平均クエリ数 | 7.54 |
最終ジャッジ日時 | 2024-12-22 16:46:40 |
合計ジャッジ時間 | 2,393 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 22 WA * 3 |
ソースコード
local function query(num) io.write("? " .. num .. "\n") io.flush() local ret = io.read("*l") ret = tonumber(ret) local a_minus_b = ret - (num - ret) return a_minus_b end local function ans(l, r) io.write("! " .. l .. " " .. r .. "\n") io.flush() os.exit() end local n = io.read("*n", "*l") local left, right = 1, n - 1 local lv = query(left) local rv = query(right) if lv == rv then ans(left + 1, right) end local hn = math.floor(n / 2) for i = 1, 18 do local mid = math.floor((left + right) / 2) local mv = query(mid) if mv == 0 then if hn <= mid then ans(1, mid) else ans(mid, n) end else if mv * lv < 0 then right = mid else left = mid end end end