Pagini recente » Cod sursa (job #1611101) | Cod sursa (job #3266672) | Cod sursa (job #2825602) | Cod sursa (job #1413696) | Cod sursa (job #1660121)
#include <cstdio>
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
long long m;
int a[15003],n;
int nr0(int x)
{
int nr=0;
while(!(x&1))
{
x>>=1;
nr++;
}
return nr;
}
void aduna(int i,int x)
{
while(i<=n)
{
a[i]+=x;
i+=(1<<nr0(i));
}
}
long suma(int i)
{
long long s=0;
while(i>0)
{
s+=a[i];
i-=(1<<nr0(i));
}
return s;
}
void citire()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %lld",&n,&m);
// memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
aduna(i,x);
}
for(int i=1;i<=m;i++)
{
int x,p,q;
scanf("%d %d %d",&x,&p,&q);
if(x)
{
long long z=suma(q);
long long y=suma(p-1);
printf("%ld\n",suma(q)-suma(p-1));
}
else aduna(p,-q);
}
}
int main()
{
citire();
return 0;
}