Pagini recente » Monitorul de evaluare | Cod sursa (job #2215424) | Cod sursa (job #214910)
Cod sursa(job #214910)
#include <stdio.h>
#define pas (k^(k-1))&k
int n, m, a[15001];
void create(int k, int val)
{
while (k<=n)
{
a[k]+=val;
k+=pas;
}
}
void achitare(int k, int val)
{
while (k<=n)
{
a[k]-=val;
k+=pas;
}
}
int sum(int k)
{
int s=0;
while (k>0)
{
s+=a[k];
k-=pas;
}
return s;
}
void parc()
{
int a, x, t, v, p, q;
while (m>0)
{
scanf("%d", &x);
if (x==0)
{
scanf("%d" "%d", &t, &v);
achitare(t,v);
}
if (x==1)
{
scanf("%d" "%d", &p, &q);
printf("%d\n", sum(q)-sum(p-1));
}
m--;
}
}
void readit()
{
int val, i;
scanf("%d" "%d", &n, &m);
for (i=1; i<=n; i++)
{
scanf("%d", &val);
create(i,val);
}
}
int main()
{
int i;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
readit();
parc();
return 0;
}