Pagini recente » Cod sursa (job #209696) | Borderou de evaluare (job #1938963) | Cod sursa (job #234275) | Cod sursa (job #2306910) | Cod sursa (job #2761735)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
//#define zeros(x) ( (x ^ (x - 1)) & x )
int n,m,cmd,t,v,p,q,suma,x;
//int v[15001];
int aib[100010]={0};
int zeros(int x)
{
return ( (x ^ (x - 1)) & x );
}
void Add(int x, int quantity)
{
int i;
for (i = x; i <= n; i += zeros(i))
aib[i] += quantity;
}
int Compute(int x)
{
int i, ret = 0;
for (i = x; i > 0; i -= zeros(i))
ret += aib[i];
return ret;
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++ )
{
fin >> x;
Add(i,x);
}
for(int i = 1; i <= m; i++)
{
fin >> cmd;
if(cmd == 0)
{
fin >> t >> v;
Add(t, -v);
}
if(cmd == 1)
{
fin >> p >> q;
suma = 0;
suma = Compute(q) - Compute(p-1);
fout<<suma<< '\n';
}
}
return 0;
}