結果

問題 No.3256 Permutation Equation
ユーザー lif4635
提出日時 2025-09-05 19:28:27
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 979 bytes
コンパイル時間 287 ms
コンパイル使用メモリ 82,228 KB
実行使用メモリ 111,760 KB
最終ジャッジ日時 2025-09-05 19:36:21
合計ジャッジ時間 14,950 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 23 WA * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

n = int(input())
p = [int(x) % n for x in input().split()]

assert 1 <= n <= 2 * 10 ** 5 
sp = sorted(p)
for i in range(n):
    assert sp[i] == i

use = [0] * n
cycle = [[] for i in range(n+1)]
for i in range(n):
    if use[i]: continue
    u = p[i]
    c = [u]
    use[u] = 1
    while i != u:
        u = p[u]
        c.append(u)
        use[u] = 1
    cycle[len(c)].append(c)


r = [-1] * n
for l in range(1, n+1):
    if l % 2 == 0:
        if len(cycle[l]) % 2 == 1:
            print("No")
            exit()
        
        while cycle[l]:
            a = cycle[l].pop()
            b = cycle[l].pop()
            c = [0] * (l * 2)
            c[0::2] = a
            c[1::2] = b
            for i in range(2 * l):
                r[c[i]] = c[(i+1)%(2*l)]
    else:
        h = (l+1) // 2
        while cycle[l]:
            c = cycle[l].pop()
            for i in range(l):
                r[c[i]] = c[(i+2)%l]

print("Yes")
r = [n if x == 0 else x for x in r]
print(*r)
0