http://acm.fzu.edu.cn/problem.php?pid=2171
Increase or decrease, interval sum. The number of times that add accumulates updates.
#include <iostream>#include<cstdio>#include<cmath>#include<vector>#include<cstring>#include<string>#include<algorithm>#include<string>#include<Set>#include<functional>#include<numeric>#include<sstream>#include<stack>#include<map>#include<queue>#pragmaComment (linker, "/stack:102400000,102400000")#defineCL (arr, Val) memset (arr, Val, sizeof (arr))#definell Long Long#defineINF 0x7f7f7f7f#defineLC L,m,rt<<1#defineRC M + 1,r,rt<<1|1#definePi ACOs (-1.0)#defineL (x) (x) << 1#defineR (x) (x) << 1 | 1#defineMID (L, R) (L + R) >> 1#defineMin (x, y) (x) < (y)? (x): (y)#defineMax (x, y) (x) < (y)? (y): (x)#defineE (x) (1 << (x))#defineIabs (x) (x) < 0? -(x): (x)#defineOut (x) printf ("%i64d\n", X)#defineLowbit (x) (x) & (-X)#defineRead () freopen ("A.txt", "R", stdin)#defineWrite () freopen ("B.txt", "w", stdout);#defineMAXN 100010#defineMoD 1000000007using namespacestd;#defineLson l,m,rt<<1#defineRson m+1,r,rt<<1|1intsum[maxn<<2];intadd[maxn<<2];voidPushup (intRT) {Sum[rt]=sum[rt<<1]+sum[rt<<1|1];}voidPushdown (intRtintm) { if(Add[rt]) {add[rt<<1]+=Add[rt]; Add[rt<<1|1]+=Add[rt]; Sum[rt<<1]+= (M-(m>>1))*Add[rt]; Sum[rt<<1|1]+= (m>>1)*Add[rt]; ADD[RT]=0; }}voidBuildintLintRintRT) {Add[rt]=0; if(l==r) {scanf ("%d",&Sum[rt]); return; } intM= (l+r) >>1; Build (Lson); Build (Rson); Pushup (RT);}voidUpdateintLintRintCintLintRintRT) { if(l<=l&&r<=R) {Add[rt]+=C; SUM[RT]+=c* (r-l+1); return; } pushdown (Rt,r-l+1); intM= (l+r) >>1; if(l<=m) update (L,r,c,lson); if(m<R) Update (L,r,c,rson); Pushup (RT);}intQueryintLintRintLintRintRT) { if(l<=l&&r<=R) {returnSum[rt]; } pushdown (Rt,r-l+1); intM= (l+r) >>1; intret=0; if(l<=m) ret+=query (L,r,lson); if(M<r) ret+=query (L,r,rson); returnret;}intMain () {//freopen ("A.txt", "R", stdin); intn,m,q; while(~SCANF ("%d%d%d",&n,&m,&q) {Build (1N1); intans,x; while(q--) {scanf ("%d",&x); Ans=query (x,x+m-1,1N1); Update (X,x+m-1,-1,1N1); printf ("%d\n", ans); } } return 0;}
Fzu problem 2171 defensive positions II (segment tree interval update template problem)