結果
問題 |
No.2732 Similar Permutations
|
ユーザー |
|
提出日時 | 2024-04-19 23:18:26 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,559 bytes |
コンパイル時間 | 469 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 191,180 KB |
最終ジャッジ日時 | 2024-10-11 17:50:00 |
合計ジャッジ時間 | 29,638 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 67 WA * 34 |
ソースコード
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 a.sort() for i in range(n): x = a[i] xi = pos[x] for j in range(i+1, n): y = a[j] yi = pos[y] d = y-x if y + d > mx:break if 1 + 2 * d > n:break if y+d in sa: zi = pos[y+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) break if ok:break 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)