Pagini recente » Profil M@2Te4i | Cod sursa (job #1706843) | Cod sursa (job #688090) | Cod sursa (job #1517331) | Cod sursa (job #93844)
Cod sursa(job #93844)
//melc.
#include<stdio.h>
#include<stdlib.h>
int c[15000],a[15000];
int n,m,x,y,z;
void creaza()
{
int aux;
for (int i=1;i<=n;i++)
for (int j=(i-((i^(i-1))&i))+1;j<=i;j++)
c[i]+=a[j];
}
void adauga(int f,int g)
{
a[f]-=g;
while (f<=n)
{
c[f]-=g;
f=f+((f^(f-1))&f);
}
}
int suma(int f, int g)
{
int sumi;
if (f!=1) return suma(1,g)-suma(1,f-1);
else
{
sumi=0;
while (g>0)
{
sumi+=c[g];
g=g-((g^(g-1))&g);
}
return sumi;
}
}
void citire()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d\n",&n,&m);
for (int i=1;i<=n-1;i++)
scanf("%d",&a[i]);
scanf("%d\n",&a[n]);
creaza();
for (int i=1;i<=m;i++)
{
scanf("%d %d %d\n",&x,&y,&z);
if (x==0) adauga(y,z);
else printf("%d\n",suma(y,z));
}
fclose(stdin);
fclose(stdout);
}
int main()
{
citire();
return 0;
}