結果
| 問題 |
No.775 tatyamと素数大富豪(hard)
|
| コンテスト | |
| ユーザー |
qwewe
|
| 提出日時 | 2025-04-24 12:29:47 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,667 bytes |
| コンパイル時間 | 212 ms |
| コンパイル使用メモリ | 81,780 KB |
| 実行使用メモリ | 828,316 KB |
| 最終ジャッジ日時 | 2025-04-24 12:31:26 |
| 合計ジャッジ時間 | 5,740 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 WA * 1 |
| other | AC * 4 MLE * 1 -- * 5 |
ソースコード
import heapq
from functools import cmp_to_key
class MaxHeapElement:
def __init__(self, s, tpl):
self.s = s
self.tpl = tpl
def __lt__(self, other):
return self.s > other.s
def main():
import sys
input = sys.stdin.read().split()
idx = 0
N = int(input[idx])
K = int(input[idx+1])
idx += 2
a = input[idx:idx+N]
idx += N
# Sort the cards based on the concatenated comparison in descending order
a.sort(key=cmp_to_key(lambda x, y: -1 if (x + y) > (y + x) else 1))
initial_tpl = tuple(a)
initial_s = ''.join(initial_tpl)
heap = []
heapq.heappush(heap, MaxHeapElement(initial_s, initial_tpl))
seen = set()
seen.add(initial_s)
result = []
while len(result) < K and heap:
current_elem = heapq.heappop(heap)
current_s = current_elem.s
current_tpl = current_elem.tpl
result.append(current_s)
n = len(current_tpl)
current_lst = list(current_tpl)
for i in range(n):
for j in range(i + 1, n):
if current_lst[i] == current_lst[j]:
continue
# Create new tuple by swapping i and j
new_lst = list(current_lst)
new_lst[i], new_lst[j] = new_lst[j], new_lst[i]
new_tpl = tuple(new_lst)
new_s = ''.join(new_tpl)
if new_s < current_s and new_s not in seen:
seen.add(new_s)
heapq.heappush(heap, MaxHeapElement(new_s, new_tpl))
for s in result[:K]:
print(s)
if __name__ == '__main__':
main()
qwewe