結果

問題 No.3256 Permutation Equation
ユーザー lif4635
提出日時 2025-09-05 17:13:28
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 964 bytes
コンパイル時間 229 ms
コンパイル使用メモリ 82,584 KB
実行使用メモリ 111,768 KB
最終ジャッジ日時 2025-09-05 19:35:49
合計ジャッジ時間 16,533 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 3
other WA * 48
権限があれば一括ダウンロードができます

ソースコード

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(-1)
            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[(h+i)%l]

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