Pagini recente » Cod sursa (job #3267012) | Cod sursa (job #1349634) | Cod sursa (job #257349) | Istoria paginii runda/oni18_11_12_z2 | Cod sursa (job #352019)
Cod sursa(job #352019)
01.#include<stdio.h>
02.int n,m,i,j,k,U[16000],D[16000],s[16000],ss,si;
03.void read(),solve();
04.int main()
05.{
06.
read();
07.
solve();
08.
return 0;
09.}
10.void read()
11.{
12.
freopen("datorii.in","r",stdin);
13.
freopen("datorii.out","w",stdout);
14.
scanf("%d%d",&n,&m);
15.}
16.void solve()
17.{
18.
for(i=1;i<=n;i<<=1)
19.
{
20.
j=i<<1;
21.
for(k=i;k<=n;k=k+j)
22.
{
23.
U[k]=k+i<=n?k+i:0;
24.
D[k]=k-i;
25.
}
26.
}
27.
for(i=1;i<=n;i++)
28.
{
29.
scanf("%d",&si);
30.
for(j=i;j;j=U[j])s[j]+=si;
31.
}
32.
for(;m;m--)
33.
{
34.
scanf("%d%d%d",&i,&j,&k);
35.
if(i)
36.
{
37.
si=ss=0;j--;
38.
for(;j;j=D[j])si+=s[j];
39.
for(;k;k=D[k])ss+=s[k];
40.
printf("%d\n",ss-si);
41.
continue;
42.
}
43.
for(;j;j=U[j])
44.
s[j]-=k;
45.
}
46.}