Pagini recente » Cod sursa (job #1780832) | Cod sursa (job #2223162) | Cod sursa (job #157266) | Cod sursa (job #2785507) | Cod sursa (job #2186541)
#include <cstdio>
using namespace std;
int v[100005], s[100005], n;
void up(int i, int k){
for(;i <= n;i += (i&-i))
v[i] -= k;
}
long long sum(long long a){
long long s;
s = 0;
for(;a > 0;a -= (a&-a)){
s += v[a];
}
return s;
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int q, m, i, p, a, b;
scanf("%d%d", &n, &m);
for(i = 1;i <= n;i++){
scanf("%d", &v[i]);
s[i] = s[i - 1] + v[i];
v[i] = s[i] - s[i - (i&-i)];
}
for(i = 0;i < m;i++){
scanf("%d", &p);
if(p == 0){
scanf("%d%d", &a, &b);
up(a, b);
}
else
if(p == 1){
scanf("%d%d", &a, &b);
printf("%d\n", sum(b) - sum(a - 1));
}
}
return 0;
}