結果
| 問題 |
No.2740 Old Maid
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-04-12 00:08:57 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 163 ms / 2,000 ms |
| コード長 | 697 bytes |
| コンパイル時間 | 277 ms |
| コンパイル使用メモリ | 82,400 KB |
| 実行使用メモリ | 114,780 KB |
| 最終ジャッジ日時 | 2024-10-08 12:14:58 |
| 合計ジャッジ時間 | 10,119 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 62 |
ソースコード
n = int(input())
p = [x-1 for x in list(map(int, input().split()))]
invp = [-1]*n
for i in range(n):
invp[p[i]] = i
next = [-1] * n
prev = [-1] * n
for i in range(n):
next[i] = (i+1)%n
prev[i] = (i-1)%n
def remove(x):
prev[next[x]] = prev[x]
next[prev[x]] = next[x]
removed = [0] * n
removed[p[-1]] = 1
last = n-1
ans = []
x = 0
for i in range(n//2):
while removed[x]:
x += 1
ans.append(x+1)
y = p[next[invp[x]]]
ans.append(y+1)
remove(invp[x])
remove(invp[y])
removed[x] = 1
removed[y] = 1
if invp[y] == last and i < n//2-1:
while removed[p[last]]:
last -= 1
removed[p[last]] = 1
print(*ans)