Pagini recente » Cod sursa (job #1709167) | Cod sursa (job #555115) | Cod sursa (job #228293) | Cod sursa (job #3143012) | Cod sursa (job #479656)
Cod sursa(job #479656)
#include <cstdio>
int n, m, a[15000];
long long c[15000];
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);
}
int return_k(int i)
{
for(unsigned j=0; j<sizeof(int); ++j)
if((1<<j)&i)
return j;
return -1;
}
void solve()
{
int code, i, j;
out=fopen("datorii.out", "w");
for(i=1; i<=n; ++i)
{
for(j=i-(1<<return_k(i))+1; j<=i; j++)
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)
{
c[c1]-=c2;
c1+=(1<<return_k(c1));
}
}
if(code==1)
{
long long s1=0, s2=0;
c1--;
while(c1>=1)
{
s1+=c[c1];
c1-=(1<<return_k(c1));
}
while(c2>=1)
{
s2+=c[c2];
c2-=(1<<return_k(c2));
}
fprintf(out, "%lld\n", s2-s1);
}
}
}
int main ()
{
read();
solve();
return 0;
}