#include<iostream>
#include<cstdio>
using namespace std;
struct data{
int l,r,tag,max;
}tr[400000];
int n,m,a[100001];
void build(int k,int s,int t)
{
tr[k].l=s;tr[k].r=t;
if(s==t){
tr[k].max=a[s];
return;
}
int mid=(s+t)>>1;
build(k<<1,s,mid);build(k<<1|1,mid+1,t);
tr[k].max=max(tr[k<<1].max,tr[k<<1|1].max);
}
void pushdown(int k)
{
tr[k<<1].tag+=tr[k].tag;
tr[k<<1|1].tag+=tr[k].tag;
tr[k<<1].max+=tr[k].tag;
tr[k&......
阅读全文