L3 002 堆疊 樹狀陣列 二分

2021-08-15 17:19:40 字數 1341 閱讀 4889

時間限制

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

輸出樣例:
invalid

invalid32

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 小...