堆疊是一種經典的後進先出的線性結構,相關的操作主要有「入棧」(在堆疊頂插入乙個元素)和「出棧」(將棧頂元素返回並從堆疊中刪除)。本題要求你實現另乙個附加的操作:「取中值」——即返回所有堆疊中元素鍵值的中值。給定n 個元素,如果 n 是偶數,則中值定義為第 n/2 小元;若是奇數,則為第 (n+1)/2 小元。
輸入的第一行是正整數 n(≤10 5 )。隨後 n 行,每行給出一句指令,為以下 3 種之一:
push key
poppeekmedian
其中 key 是不超過 10 5 的正整數;push 表示「入棧」;pop 表示「出棧」;peekmedian 表示「取中值」。
對每個 push 操作,將 key 插入堆疊,無需輸出;對每個 pop 或 peekmedian操作,在一行中輸出相應的返回值。若操作非法,則對應輸出 invalid。
17
poppeekmedian
push 3
peekmedian
push 2
peekmedian
push 1
peekmedian
poppop
push 5
push 4
peekmedian
poppop
poppop
invalid
invalid32
2124
453invalid
#include
#include
#include
#include
using
namespace std;
vector<
int> p1,p2;
vector<
int>
::iterator it;
intmain()
else
if(str==
"pop")}
else
if(str==
"peekmedian")}
}return0;
}/*17pop
peekmedian
push 3
peekmedian
push 2
peekmedian
push 1
peekmedian
poppop
push 5
push 4
peekmedian
poppop
poppop
*/
1.lower_bound()函式的用法 upper_bound()函式用法2.vector型別函式的使用: insert(),erase(),pop_back(),push_back(),back(), front(),
L3 002 特殊堆疊 (30 分)
堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇數,則為第 n 1 2 小元。輸入...
L3 002 特殊堆疊 (30 分
堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇數,則為第 n 1 2 小元。輸入...
L3 002 特殊堆疊 (30 分
l3 002 特殊堆疊 30 分 堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇...