标签:mes 人人 const for online block 整理 \n display
void update(int now,int nl,int nr){
node[now].sum=node[ls(now)].sum+node[rs(now)].sum;
node[now].lmax=max(node[ls(now)].lmax,node[ls(now)].sum+node[rs(now)].lmax);
node[now].rmax=max(node[rs(now)].rmax,node[ls(now)].rmax+node[rs(now)].sum);
node[now].maxx=max( node[ls(now)].rmax+node[rs(now)].lmax ,
max( node[ls(now)].maxx , node[rs(now)].maxx) );return;
}
//It is coded by ning_mew on 7.18
#include<bits/stdc++.h>
#define ls(x) (x*2)
#define rs(x) (x*2+1)
#define LL long long
using namespace std;
const int maxn=2e5+7;
int n,m,d;LL k;
struct Node{LL lmax,rmax,maxx,sum;}node[maxn*4];
void update(int now,int nl,int nr){
node[now].sum=node[ls(now)].sum+node[rs(now)].sum;
node[now].lmax=max(node[ls(now)].lmax,node[ls(now)].sum+node[rs(now)].lmax);
node[now].rmax=max(node[rs(now)].rmax,node[ls(now)].rmax+node[rs(now)].sum);
node[now].maxx=max( node[ls(now)].rmax+node[rs(now)].lmax , max( node[ls(now)].maxx , node[rs(now)].maxx) );return;
}
void build(int now,int nl,int nr){
if(nl==nr){node[now].sum=node[now].maxx=node[now].lmax=node[now].rmax=-k;return;}
int mid=(nl+nr)/2;
build(ls(now),nl,mid);build(rs(now),mid+1,nr);
update(now,nl,nr);
}
void add(int now,int nl,int nr,int pl,LL ad){
if(nl==nr&&nr==pl){
LL box=node[now].sum+ad; node[now].sum=box;node[now].maxx=box;node[now].lmax=box;node[now].rmax=box; return;
} if(nr<pl||pl<nl)return;
int mid=(nl+nr)/2;
add(ls(now),nl,mid,pl,ad);add(rs(now),mid+1,nr,pl,ad);
update(now,nl,nr);
}
int main(){
scanf("%d%d%lld%d",&n,&m,&k,&d);
build(1,1,n);
for(int i=1;i<=m;i++){
int r;LL x;scanf("%d%lld",&r,&x);
add(1,1,n,r,x);//cout<<node[1].maxx<<endl;
if(node[1].maxx>d*k)printf("NIE\n");else printf("TAK\n");
}return 0;
}
博主蒟蒻,随意转载。但必须附上原文链接:http://www.cnblogs.com/Ning-Mew/,否则你会场场比赛暴0!!!
【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)
标签:mes 人人 const for online block 整理 \n display
原文地址:https://www.cnblogs.com/Ning-Mew/p/9331098.html