結果

問題 No.3256 Permutation Equation
ユーザー kidodesu
提出日時 2025-09-06 00:20:05
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,074 bytes
コンパイル時間 396 ms
コンパイル使用メモリ 82,764 KB
実行使用メモリ 115,040 KB
最終ジャッジ日時 2025-09-06 00:20:21
合計ジャッジ時間 12,403 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 23 WA * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
    Ans = [-1] * n
    v = [0] * n
    E = [[] for _ in range(n+1)]
    for i in range(n):
        if v[i]:
            continue
        now = i
        cnt = 0
        while not v[now]:
            cnt += 1
            v[now] = 1
            now = A[now] % n
        now = i
        if cnt % 2:
            while Ans[now] == -1:
                Ans[now] = A[A[now]%n]
                now = A[now] % n
        else:
            if E[cnt]:
                Ans[i] = E[cnt].pop()
                now = Ans[i] % n
                p = A[i]
                while Ans[now] == -1:
                    Ans[now] = p
                    p, now = A[now], p % n
            else:
                E[cnt].append(i if i else i+n)
    return Ans

n = int(input())
A = list(map(int, input().split()))

def check():
    for i in range(len(ans)):
        if A[i] != ans[ans[i]%n]:
            return 0
    return 1
ans = main()
if min(ans) != -1:
    if not check():
        print("No")
    else:
        assert check()
        print("Yes")
        print(*ans)
else:
    print("No")
0