#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> usingnamespace std; constint N = 100010; int n, m; int a[N], tr[N];
intlowbit(int x){ return x & ( -x); } voidadd(int x, int v){ for(int i = x; i <= n; i += lowbit(i)) tr[i] += v; } intquery(int x){ int res = 0; for(int i = x; i > 0; i -= lowbit(i)) res += tr[i]; return res; }
intmain(){ scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); //读取a[i]数组; for(int i = 1; i <= n; i++) add(i, a[i]);//第i个位置加上某个数;tr[n]树状数组初始化 while(m--){ int k, x, y; scanf("%d%d%d", &k, &x, &y); if(k == 0) printf("%d\n", query(y) - query(x - 1)); elseadd(x, y); } return0; }
intlowbit(int x){ return x & -x; } voidadd(int x){ for(int i = x; i < N; i += lowbit(i)) tr[i] ++; } intsum(int x){ int res = 0; for(int i = x; i > 0; i -= lowbit(i)) res += tr[i]; return res; }
intmain(){ scanf("%d", &n); for(int i = 0; i < n; i++){ int x, y; scanf("%d%d", &x, &y); x++; level[sum(x)]++;//第几层星星增加;sum里面没有当前星星; add(x);//再加x这个坐标后,星星总数; } for(int i = 0; i < n; i++) cout << level[i] << endl; return0; }