Pagini recente » Cod sursa (job #345379) | Cod sursa (job #2196034) | Cod sursa (job #1933204) | Cod sursa (job #1390726) | Cod sursa (job #676290)
Cod sursa(job #676290)
#include <cstdio>
#define infile "datorii.in"
#define outfile "datorii.out"
#define n_max 15005
#define zeros(x) ((x&(x-1))^x)
using namespace std;
int N, M;
int AIB[n_max];
inline int query(int poz)
{
int rez = 0;
for(int i = poz; i; i -= zeros(i))
rez += AIB[i];
return rez;
}
inline void add(int poz, int val)
{
for(int i = poz; i <= N; i += zeros(i))
AIB[i] += val;
}
int main(void)
{
freopen(infile, "r", stdin);
freopen(outfile, "w", stdout);
scanf("%d %d", &N, &M);
int op, x, y;
for(int i=1;i<=N;++i)
{
scanf("%d",&x);
add(i,x);
}
while(M--)
{
scanf("%d %d %d",&op, &x, &y);
switch(op)
{
case 0: add(x,-y); break;
case 1: printf("%d\n", query(y) - query(x-1)); break;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}