Pagini recente » Cod sursa (job #2648369) | Cod sursa (job #1460728) | Cod sursa (job #510384) | Cod sursa (job #330713) | Cod sursa (job #1007749)
#include<stdio.h>
#define NMAX 100005
int n, m, a, b, v[NMAX], x, j, i;
int caut()
{
int s,d,piv;
s=1;
d=n;
piv=v[(s+d)/2];
while(s<d)
{
if(piv==a)
return (s+d)/2;
else
if(piv>a)
d=(s+d)/2;
else
s=(s+d)/2+1;
piv=v[(s+d)/2];
}
if(piv==a)
return s;
return -1;
}
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",&x);
v[i]=v[i-1]+x;
}
for(i=1;i<=m;i++)
{
scanf("%d",&x);
if(x==0)
{
scanf("%d %d",&a,&b);
for(j=a;j<=n;j++)
v[j]+=b;
}
else
if(x==1)
{
scanf("%d %d",&a,&b);
printf("%d\n",v[b]-v[a-1]);
}
else
{
scanf("%d",&a);
printf("%d\n",caut());
}
}
return 0;
}