树状数组模板

来源:互联网 发布:hydra软件下载 编辑:程序博客网 时间:2024/06/05 05:55

题目:树状数组模板


#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<map>#include<algorithm>#include<sstream>#include<queue>#include<stack>#include<set>#include<cmath>using namespace std;int n,m;long long c[500005]= {0};int lowbit(int x) {return x&-x;}void add(int x,int d) {while(x<=n) {c[x]+=d;x+=lowbit(x);}}long long sum(int x) {long long s=0;while(x>0) {s+=c[x];x-=lowbit(x);}return s;}int main() {scanf("%d%d",&n,&m);for(int i=1; i<=n; i++) {int x;scanf("%d",&x);add(i,x);}for(int i=1; i<=m; i++) {int op,x,y;scanf("%d%d%d",&op,&x,&y);if(op==1) add(x,y);else {if(x>y) swap(x,y);printf("%lld\n",abs(sum(y)-sum(x-1)));}}return 0;}