結果

問題 No.2740 Old Maid
ユーザー norioc
提出日時 2025-03-06 03:23:10
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 287 ms / 2,000 ms
コード長 2,216 bytes
コンパイル時間 391 ms
コンパイル使用メモリ 82,356 KB
実行使用メモリ 176,920 KB
最終ジャッジ日時 2025-03-06 03:23:29
合計ジャッジ時間 16,443 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 62
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

class LinkedList:
class Node:
def __init__(self, val, owner):
self.val = val
self.owner = owner
self.left = None
self.right = None
def __init__(self):
self.head = None
self.tail = None
self.size = 0
def __len__(self):
return self.size
def __iter__(self):
if self.head is None: return
node = self.head
while node:
yield node.val
node = node.right
@staticmethod
def _connect(a: Node, b: Node):
"""a b """
a.right = b
b.left = a
def append(self, val) -> Node:
node = LinkedList.Node(val, self)
if self.head is None:
self.head = self.tail = node
else:
LinkedList._connect(self.tail, node)
self.tail = node
self.size += 1
return node
def appendleft(self, val) -> Node:
node = LinkedList.Node(val, self)
if self.head is None:
self.head = self.tail = node
else:
LinkedList._connect(node, self.head)
self.head = node
self.size += 1
return node
def remove(self, node: Node):
assert node is not None and node.owner is self
assert self.size > 0
if node is self.head:
self.head = self.head.right
if self.head:
self.head.left = None
elif node is self.tail:
self.tail = self.tail.left
if self.tail:
self.tail.right = None
else:
left = node.left
right = node.right
left.right = right
right.left = left
self.size -= 1
N = int(input())
P = list(map(lambda x: int(x)-1, input().split()))
p2node = {}
ll = LinkedList()
for p in P:
node = ll.append(p)
p2node[p] = node
used = set()
ans = []
for i in range(N):
if i in used: continue
node = p2node[i]
if node.right is None: continue
ans.append(node.val)
ans.append(node.right.val)
ll.remove(node)
ll.remove(node.right)
used.add(ans[-1])
used.add(ans[-2])
print(*[x+1 for x in ans])
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0