Pagini recente » Cod sursa (job #1647899) | Cod sursa (job #1865033) | Cod sursa (job #1144677) | Cod sursa (job #1357941) | Cod sursa (job #214822)
Cod sursa(job #214822)
#include <stdio.h>
#include <fstream>
using namespace std;
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 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 %ld",&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 z=suma(q);
long y=suma(p-1);
printf("%ld\n",suma(q)-suma(p-1));
}
else aduna(p,-q);
}
}
int main()
{
citire();
return 0;
}