1. 程式人生 > >團體程式設計天梯賽-練習集 L3-002. 堆疊 線段樹 單點更新 解題報告

團體程式設計天梯賽-練習集 L3-002. 堆疊 線段樹 單點更新 解題報告

大家都知道“堆疊”是一種“先進後出”的線性結構,基本操作有“入棧”(將新元素插入棧頂)和“出棧”(將棧頂元素的值返回並從堆疊中將其刪除)。現請你實現一種特殊的堆疊,它多了一種操作叫“查中值”,即返回堆疊中所有元素的中值。對於N個元素,若N是偶數,則中值定義為第N/2個最小元;若N是奇數,則中值定義為第(N+1)/2個最小元。

輸入格式:

輸入第一行給出正整數N(<= 105)。隨後N行,每行給出一個操作指令,為下列3種指令之一:

Push key
Pop
PeekMedian

其中Push表示入棧,key是不超過105的正整數;Pop表示出棧;PeekMedian表示查中值。

輸出格式:

對每個入棧指令,將key入棧,並不輸出任何資訊。對每個出棧或查中值的指令,在一行中列印相應的返回結果。若指令非法,就列印“Invalid”。

輸入樣例:
17
Pop
PeekMedian
Push 3
PeekMedian
Push 2
PeekMedian
Push 1
PeekMedian
Pop
Pop
Push 5
Push 4
PeekMedian
Pop
Pop
Pop
Pop
輸出樣例:
Invalid
Invalid
3
2
2
1
2
4
4
5
3
Invalid