Pagini recente » Cod sursa (job #2828422) | Cod sursa (job #2906694)
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int16_t c;
int n, m, x, y, pw, aux;
int dat[16385];
int interog(int, int, int);
void achit();
int main()
{
f >> n >> m;
pw = 1; while(pw < n) pw *= 2;
pw--;
for (int i = 1; i <= n; i++)
f >> dat[pw + i];
for (int i = pw; i; i--)
dat[i] = dat[2 * i] + dat[2 * i + 1];
for(; m; m--){
f >> c >> x >> y;
if(c) g << interog(1, 1, pw + 1) << '\n';
else achit();
}
return 0;
}
int interog(int nod, int st, int dr)
{
if(st > y || dr < x) return 0;
if(st >= x && dr <= y) return dat[nod];
int m = (st + dr) / 2;
return interog(2 * nod, st, m) + interog(2 * nod + 1, m + 1, dr);
}
void achit()
{
int k = x + pw;
while(k){
dat[k] -= y;
k /= 2;
}
}