時間限制
200 ms
記憶體限制
65536 kb
**長度限制
8000 b
判題程式
standard
作者
陳越
大家都知道「堆疊」是一種「先進後出」的線性結構,基本操作有「入棧」(將新元素插入棧頂)和「出棧」(將棧頂元素的值返回並從堆疊中將其刪除)。現請你實現一種特殊的堆疊,它多了一種操作叫「查中值」,即返回堆疊中所有元素的中值。對於n個元素,若n是偶數,則中值定義為第n/2個最小元;若n是奇數,則中值定義為第(n+1)/2個最小元。
輸入格式:
輸入第一行給出正整數n(<= 105)。隨後n行,每行給出乙個操作指令,為下列3種指令之一:
push
keypop
peekmedian
其中push表示入棧,key是不超過105的正整數;pop表示出棧;peekmedian表示查中值。
輸出格式:
對每個入棧指令,將key入棧,並不輸出任何資訊。對每個出棧或查中值的指令,在一行中列印相應的返回結果。若指令非法,就列印「invalid」。
輸入樣例:
17輸出樣例:poppeekmedian
push 3
peekmedian
push 2
peekmedian
push 1
peekmedian
poppop
push 5
push 4
peekmedian
poppop
poppop
invalidinvalid32
2124
453invalid
提交**
#include#include#includeusing namespace std;
const int n=1e5;
int bitree[n+10];
inline int lowbit(int x)
void add(int pos,int x)
}int sum(int pos)
return res;
}bool check(int x,int size)
stacks;
int main()
}else if(op[1]=='u')else
int l=0,r=n;
while(lprintf("%d\n",l);
} }}
L3 002 特殊堆疊 樹狀陣列 二分
原題鏈結 堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇數,則為第 n 1 2 ...
線段樹 L3 002 堆疊
大家都知道 堆疊 是一種 先進後出 的線性結構,基本操作有 入棧 將新元素插入棧頂 和 出棧 將棧頂元素的值返回並從堆疊中將其刪除 現請你實現一種特殊的堆疊,它多了一種操作叫 查中值 即返回堆疊中所有元素的中值。對於n個元素,若n是偶數,則中值定義為第n 2個最小元 若n是奇數,則中值定義為第 n ...
天梯賽L3 002 特殊堆疊(陣列模擬 二分)
題目鏈結 l3 002 特殊堆疊 30 分 堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小...