結果
問題 |
No.2577 Simple Permutation Guess
|
ユーザー |
|
提出日時 | 2023-12-05 00:23:07 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 945 bytes |
コンパイル時間 | 519 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 82,392 KB |
平均クエリ数 | 0.91 |
最終ジャッジ日時 | 2024-09-26 23:34:42 |
合計ジャッジ時間 | 15,080 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 1 |
other | RE * 111 |
ソースコード
from src.data_structure.BIT import BIT n = int(input()) L = [0] * n R = [i for i in range(n)] def f(): X = [(l + r) for l, r in zip(L, R)] for i in range(n - 1): if X[i] > i: X[i] -= i + 1 X[i + 1] += 1 for i in range(n - 1, -1, -1): if X[i] % 2 == 1: X[i - 1] += i X[i] //= 2 X[0] //= 2 return X def ask(X, q="?"): P = [] bit = BIT(n) for i in range(n): bit.add(i, 1) for x in X[::-1]: p = bit.lower_bound(x + 1) - 1 P.append(p + 1) bit.add(p, -1) print(q, *P, flush=True) assert len(set(P)) == n if q == "?": return int(input()) while 1: mid = f() if mid == L: break res = ask(mid) if res == -1: exit() if res == 0: R = mid else: L = mid res = ask(R) if res == -1: exit() if res == 1: ask(R, "!") else: ask(L, "!")