Pagini recente » Istoria paginii runda/clasa9a2/clasament | Atasamentele paginii hlo_cj_av_dintrie | Cod sursa (job #1620194) | Cod sursa (job #883450) | Cod sursa (job #201385)
Cod sursa(job #201385)
#include <stdio.h>
#define maxl 15010
int n,m,i,j,k,p,q,s1,s2,sol,div;
int c[maxl],a[maxl];
inline int biti(int i)
{
div=2;sol=0;
while (i%div==0)
{
++sol;
div*=2;
}
return sol;
}
void update()
{
j=p;
while (j<=n)
{
c[j]-=q;
j+=1<<biti(j);
}
}
void querry()
{
p--;s1=0;s2=0;
while (p>0)
{
s1+=c[p];
p-=1<<biti(p);
}
while (q>0)
{
s2+=c[q];
q-=1<<biti(q);
}
printf("%d\n",s2-s1);
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
for (i=1; i<=n; i++)
{
scanf("%d",&k);
a[i]=a[i-1]+k;
}
for (i=1; i<=n; i++)
{
p=i-(1<<biti(i));
c[i]=a[i]-a[p];
}
for (i=1; i<=m; i++)
{
scanf("%d %d %d",&k,&p,&q);
if (k==0) update();
else querry();
}
return 0;
}