树状数组模板

来源:互联网 发布:linux命令执行过程 编辑:程序博客网 时间:2024/06/03 13:22

模板废话

#include<iostream>#define ll long longusing namespace std;const int maxn=500010;int n,m;int bit[maxn];void add(int i,int x){    while (i<=n){        bit[i]+=x;        i+=i&-i;    }}ll sum(int i){    ll ans=0;    while (i){        ans+=bit[i];        i-=i&-i;    }    return ans;}int data;int main(){    scanf("%d %d",&n,&m);    for (int i=1;i<=n;i++){        scanf("%d",&data);        add(i,data);    }    int tmp,x,y;    while (m--){        scanf("%d %d %d",&tmp,&x,&y);        if (tmp==1) add(x,y);        else printf("%d\n",sum(y)-sum(x-1));    }}