Pagini recente » Cod sursa (job #1353870) | Cod sursa (job #137335) | Cod sursa (job #2313287) | Cod sursa (job #2983026) | Cod sursa (job #3255511)
#include <iostream>
#include <fstream>
using namespace std;
int v[15001], aib[15001];
int Positions(int x)
{
return x^(x-1)&x;
}
void Add(int pos, int x, int n)
{
for (int i=pos;i<=n;i+=Positions(i))
aib[i]+=x;
}
int Compute(int pos)
{
int ans=0;
for (int i=pos;i>=1;i-= Positions(i))
ans+=aib[i];
return ans;
}
int main()
{
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, q;
fin>>n>>q;
for (int i=1;i<=n;++i)
{
fin>>v[i];
Add(i, v[i], n);
}
while (q--)
{
int op, a, b;
fin>>op>>a>>b;
if (op==0)
Add(a, -b, n);
else
fout<<Compute(b)- Compute(a-1)<<'\n';
}
return 0;
}