結果
| 問題 |
No.3256 Permutation Equation
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
ソースコード
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)