线段树的创建
struct segment{
int r,l;
int dta;
}t[size*4];
void build (int p,int l,int r)
{
t[p].l=l,t[p].t=r;
if(l==r)
{
t[p].dat==a[l];
return ;
}
int mid=(l+r)/2;
build(p*2,l,mid);
build(p*2+1,mid+1,r);
t[p].dat=max(t[p*2].dat,dat[p*2+1].dat);
}
//调用入口build(1,1,n);
void change(int p,int x,int y){
if(t[p].l==t[p].r)
{
t[p].dat=v;
return ;
}
int mid=(t[p].l+t[p].r)/2;
if(x<=mid)
change(p*2+1,x,v);
t[p]dat.max(y[p*2].dat,t[p*2+1].dat);
}
//调用人口change(1,x,v);
int ask(int p,int l,int r){
if(l<=t[p].l&&r>=t[p].r)
return t[p].dat;
int mid=(t[p].l+t[p].r)/2;
int val=-(1<<30);
if(l<=mid)
val=max(val,ask(p*2,l,r));
if(l>mid)
val=max(val,ask(p*2+1,l,r));
}