結果
| 問題 |
No.2732 Similar Permutations
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-04-19 23:10:21 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,470 bytes |
| コンパイル時間 | 476 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 118,016 KB |
| 最終ジャッジ日時 | 2024-10-11 17:27:36 |
| 合計ジャッジ時間 | 5,722 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | TLE * 1 -- * 100 |
ソースコード
import sys
sys.setrecursionlimit(5*10**5)
input = sys.stdin.readline
from collections import defaultdict, deque, Counter
from heapq import heappop, heappush
from bisect import bisect_left, bisect_right
from math import gcd
n = int(input())
a = list(map(int,input().split()))
if len(set(a)) != n:
x = [[] for i in range(max(a)+10)]
for i in range(n):
x[a[i]].append(i)
ok = 1
p1 = list(range(1, n+1))
p2 = list(range(1, n+1))
for i in range(max(a)+10):
if len(x[i]) >= 2:
s,t = x[i][0], x[i][1]
p2[t], p2[s] = p2[s], p2[t]
break
else:
ok = 0
p1 = [0]*(n)
p2 = [0]*(n)
s = set([i for i in range(1, n+1)])
mx = max(a)
sa = set(a)
pos = [-1]*(mx+1)
for i in range(n):
pos[a[i]] = i
for xi in range(n):
x = a[xi]
for d in range(1, n):
if x + 2*d > mx:break
if 1 + 2* d > n:break
if x + d in sa and x+2*d in sa:
yi = pos[x+d]
zi = pos[x+2*d]
p1[xi], p1[yi], p1[zi] = 1+d, 1+d+d, 1
p2[xi], p2[yi], p2[zi] = 1+d+d, 1, 1+d
ok = 1
s.discard(1)
s.discard(1+d)
s.discard(1+d+d)
s = list(s)
for i in range(n):
if p1[i]: continue
num = s.pop()
p1[i] = num
p2[i] = num
if ok:
print(*p1)
print(*p2)
else:
print(-1)