hiho week 22 register

Ended

Participants:196

Verdict:Accepted
Score:100 / 100
Submitted:2014-12-01 22:51:36

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
#define mst(A,k) memset(A,k,sizeof(A))
#define lo o<<1
#define ro o<<1|1
const int N = 100005;
int n,p[N],set[3*N],add[3*N],sum[3*N];
void Build(int s,int t,int o){
    if(s == t){
        set[o] = add[o] = 0;
        sum[o] = p[s];
        return;
    }
    int mid = (s+t)/2;
    Build(s,mid,lo);
    Build(mid+1,t,ro);
    sum[o] = sum[lo] + sum[ro];
}
void Add(int s,int t,int o,int l,int r,int w){
    if(l <= s && t <= r){
        if(set[o]) set[o] += w;
        else add[o] += w;
        sum[o] += w*(t-s+1);
        return;
    }
    int mid = (s+t)/2;
    if(add[o]){
        if(set[lo]) set[lo] += add[o];
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX