Pagini recente » Cod sursa (job #154336) | Cod sursa (job #2457732) | Cod sursa (job #1607758) | Cod sursa (job #1158467) | Cod sursa (job #2131211)
#include <bits/stdc++.h>
#define pow2(x) ( ( x ^ (x-1) ) & x)
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int aib[15005],s[15005],n,m;
void Citire()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>s[i];
s[i]=s[i-1]+s[i];
aib[i]=s[i]-s[i-pow2(i)];
}
}
void Update(int poz,int x)
{
for(int i=poz;i<=n;i=i+pow2(i))
aib[i]=aib[i]+x;
}
int Query(int x)
{
int suma=0;
for(int i=x;i>=1;i=i-pow2(i))
suma=suma+aib[i];
return suma;
}
int main()
{
int p,x,y;
Citire();
for(int i=1;i<=m;i++)
{
fin>>p;
switch(p)
{
case 0:
fin>>x>>y;
Update(x,-y);
break;
case 1:
fin>>x>>y;
fout<<Query(y)-Query(x-1)<<"\n";
break;
}
}
return 0;
}