Pagini recente » Cod sursa (job #330717) | Cod sursa (job #1558630) | Cod sursa (job #329570) | Cod sursa (job #1787211) | Cod sursa (job #2071207)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
#define zeros(x) ((x^(x-1))&x)
int aib[15000],n;
void add(int pozitie, int cantitate)
{
for(int i=pozitie;i<=n;i+=zeros(i))
{
aib[i]+=cantitate;
}
}
int compute1(int pozitie2)
{
int rez=0;
for(int i=pozitie2;i>=1;i-=zeros(i))
{
rez+=aib[i];
}
return rez;
}
int compute (int poz1, int poz2)
{
return compute1(poz2) - compute1(poz1 - 1);
}
int main()
{
// return 0;
int m,i,x,y,z,j;
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>x;
add(i,x);
}
for(i=1;i<=m;i++)
{
fin>>x>>y>>z;
if(x==0)
{
add(y,-z);
}
if(x==1)
{
fout<<compute(y,z)<<endl;
}
}
}