Pagini recente » Cod sursa (job #1827665) | Cod sursa (job #2486877) | Cod sursa (job #826371) | Cod sursa (job #459204) | Cod sursa (job #1042312)
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;
long long int n,m,c[35000],i,tip,poz,val,indice,nr;
long long int calcSum(int j)
{
int sum = 0;
sum += c[j];
while(j>=1)
{
j = j - (j & (-j));
sum += c[j];
}
return sum;
}
int main()
{
f = fopen("datorii.in","r");
g = fopen("datorii.out","w");
fscanf(f,"%lld %lld",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(f,"%lld",&nr);
indice = i;
while(indice <= n)
{
c[indice] += nr;
indice += indice & (-indice);
}
}
for(i=1;i<=m;i++)
{
fscanf(f,"%lld %lld %lld",&tip,&poz,&val);
if(tip == 0)
{
while(poz <= n)
{
c[poz] -= val;
poz += poz & (-poz);
}
}
else if(tip == 1)
{
fprintf(g,"%lld\n",calcSum(val) - calcSum(poz-1));
}
};
return 0;
}