【模板】树状数组


#include
using namespace std;
const int z = 1024;
int tree[z];
int lowbit(int &x) {
	return x&(-x);
}
int qsum(int x) {
	int s = 0;
	while(x > 0) {
		s += tree[x];
		x -= lowbit(x);
	}
	return s;
}
void padd(int n,int x,int key) {
	while(x <= n) {
		tree[x] += key;
		x += lowbit(x);
	}
	return;
}
void qrpa(int *data) {
	int datb[z];
	for(int i = 1;i <= data[0];++i) {
		datb[i] = data[i]-data[i-1];
		tree[i] = tree[i-1]+datb[i];
	}
	int l, r, m, key;
	scanf("%d",&m);
	for(int i = 1;i <= m;++i) {
		scanf("%d %d",&l,&r,&key);
		padd(data[0],l,key);
		padd(data[0],r+1,-key);
	}
	for(int i = 1;i <= data[0];++i) 
		printf("%d\n",qsum(i));
}
int main() {
	//to do;
	return 0;
}