【題目描述】
老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3…編號,然後不定時的問管家問題,問題是這樣的:在a到b號賬中最多的一筆是多少?為了讓管家沒時間作假他總是一次問多個問題。
【輸入格式】
輸入中第一行有兩個數m,n,分別表示有m(m<=100000)筆賬,n個詢問(n<=100000)。
第二行為m個數,分別是賬目的錢數
後面n行分別是n個問題,每行有2個數字說明開始結束的賬目編號。
【輸出格式】
輸出為每個問題的答案。具體檢視樣例。
【程式**】
#includeusing namespace std;
const int maxn=100001;
int n,m,l,r,a[maxn],segmax[maxn*4];//線段樹陣列要開大4倍
void build(int cur,int l,int r)
}int get_max(int cur,int l,int r,int x,int y)
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++) cin>>a[i];
build(1,1,n);
while(m--) {
cin>>l>>r;
cout<【參考文獻】
hdu I hate it 區間最大值 線段樹
include define maxn 200001 define lson l,mid,rt 1 define rson mid 1,r,rt 1 1 int max maxn 2 int n,m int max int a,int b void pushup int rt 要理解好更新的定義,不...
線段樹 區間修改 最大值
最大值 區間修改 總時間限制 10000ms 單個測試點時間限制 1000ms 記憶體限制 65536kb 描述 在n 1 n 100000 個數a1 an組成的序列上進行m 1 m 100000 次操作,操作有兩種 1 1 lr c 表示把a l 到a r 增加c c的絕對值不超過10000 2 ...
數列區間最大值 線段樹
acwing 1270 time limit 2s memory limit 64mb problem description 輸入一串數字,給你 m 個詢問,每次詢問就給你兩個數字 x,y要求你說出 x 到 y 這段區間內的最大數。input output 輸出共 m 行,每行輸出乙個數。samp...