Pagini recente » Cod sursa (job #157902) | Cod sursa (job #389556) | Cod sursa (job #2459442) | Cod sursa (job #2986290) | Cod sursa (job #479658)
Cod sursa(job #479658)
#include <cstdio>
#define lsb(x) ((x ^ (x - 1)) & x)
int n, m, a[15001];
long long c[15001];
FILE *in, *out;
void read()
{
int i;
in = fopen("datorii.in", "r");
fscanf(in, "%d%d", &n, &m);
for(i=1; i<=n; ++i)
fscanf(in, "%d", a+i);
}
void solve()
{
int code, i, j;
out=fopen("datorii.out", "w");
for(i=1; i<=n; ++i)
{
for(j=i-(lsb(i))+1; j<=i; j++)
if(j>=0)
c[i]+=a[j];
}
for(i=0; i<m; ++i)
{
int c1, c2;
fscanf(in, "%d%d%d", &code, &c1, &c2);
if(code==0)
{
while(c1<=n && c1>=0)
{
c[c1]-=c2;
c1+=(lsb(c1));
}
}
if(code==1)
{
long long s1=0, s2=0;
c1--;
while(c1>=1 && c1<=n)
{
s1+=c[c1];
c1-=(lsb(c1));
}
while(c2>=1 && c2<=n)
{
s2+=c[c2];
c2-=(lsb(c2));
}
fprintf(out, "%lld\n", s2-s1);
}
}
}
int main ()
{
read();
solve();
return 0;
}