結果

問題 No.2577 Simple Permutation Guess
ユーザー rin204
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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, "!")
0