結果
| 問題 | No.649 ここでちょっとQK! |
| コンテスト | |
| ユーザー |
vwxyz
|
| 提出日時 | 2022-03-29 13:27:37 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 918 ms / 3,000 ms |
| コード長 | 1,363 bytes |
| 記録 | |
| コンパイル時間 | 292 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 21,760 KB |
| 最終ジャッジ日時 | 2024-11-08 02:16:24 |
| 合計ジャッジ時間 | 14,128 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
import heapq
import sys
from heapq import heappush,heappop,heapify,heappushpop,_heappop_max,_heapify_max
def _heappush_max(heap,item):
heap.append(item)
heapq._siftdown_max(heap, 0, len(heap)-1)
def _heappushpop_max(heap, item):
if heap and item < heap[0]:
item, heap[0] = heap[0], item
heapq._siftup_max(heap, 0)
return item
readline=sys.stdin.readline
class Slope_Trick:
def __init__(self):
self.queueL=[]
self.queueR=[]
def Push_Left(self,x):
_heappush_max(self.queueL,heappushpop(self.queueR,x))
def Push_Right(self,x):
heappush(self.queueR,_heappushpop_max(self.queueL,x))
def Pop_Left(self):
return _heappop_max(self.queueL)
def Pop_Right(self):
return heappop(self.queueR)
def __str__(self):
return '['+', '.join(map(str,sorted(self.queueL)))+']+['+', '.join(map(str,sorted(self.queueR)))+']'
Q,K=map(int,readline().split())
ST=Slope_Trick()
for _ in range(Q):
data=map(int,readline().split())
q=next(data)
if q==1:
v=next(data)
if len(ST.queueL)<K:
ST.Push_Left(v)
else:
ST.Push_Right(v)
else:
if len(ST.queueL)==K:
ans=ST.Pop_Left()
if ST.queueR:
ST.Push_Left(ST.Pop_Right())
else:
ans=-1
print(ans)
vwxyz