Cod sursa(job #228384)
Utilizator | Diaconeasa Andrei AndreiD | Data | 7 decembrie 2008 00:21:51 |
---|---|---|---|
Problema | Arbori indexati binar | Scor | 30 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 1.02 kb |
#include <stdio.h>
int V[100110];
int N,M,i,j,s,ok,a,b,x,poz;
int main()
{
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
scanf("%d %d", &N,&M);
for (i=1;i<=N;++i)
scanf("%d", V+i);
for (j=1;j<=M;++j)
{
scanf("%d %d", &x,&a);
if (x==0)
{
scanf("%d",&b);
V[a]=b+V[a];
}
else
if (x==1)
{
scanf("%d",&b);
s=0;
for (i=a;i<=b;++i)
s+=V[i];
printf("%d\n", s);
}
else
if (x==2)
{
s=0;
poz=0;
for (i=1;i<=N;++i)
{
s+=V[i];
if (s==a)
poz=i;
}
if (poz!=0) printf("%d\n",poz);
else printf("-1\n");
}
}
return 0;
}