树状数组

来源:互联网 发布:r创建数据集 dataframe 编辑:程序博客网 时间:2024/06/06 03:03
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>const int MAXN = 500000 + 5;int c[MAXN];int n,m;inline int lowbit(int x){return x&(-x);}inline void swap(int &a,int &b){a^=b;b^=a;a^=b;}void sum(int x,int y){if(x>y)swap(x,y);x--;int l=0,r=0;for(;x>0;x-=lowbit(x))l+=c[x];for(;y>0;y-=lowbit(y))r+=c[y];printf("%d\n",r-l);}void add(int x,int val){for(;x<=n;x+=lowbit(x))c[x]+=val;}int main(){memset(c,0,sizeof(c));scanf("%d",&n);for(int i=1;i<=n;i++){int b;scanf("%d",&b);add(i,b);}scanf("%d",&m);while(m--){int x,y,z;scanf("%d%d%d",&x,&y,&z);if(x==1)add(y,z);else sum(y,z);}return 0;}

0 0
原创粉丝点击