Pagini recente » Cod sursa (job #1508034) | Cod sursa (job #2774083) | Cod sursa (job #3170548) | Cod sursa (job #12999) | Cod sursa (job #1138496)
#include <cstdio>
using namespace std;
int a[100001], s[100001];
int cb (int x, int n)
{
int st=1, dr=n, m;
while (st<=dr)
{
m=(st+dr)/2;
if (s[m]==x) return m;
else if (s[m]<x) st=m+1;
else dr=m-1;
}
m=(st+dr)/2;
if (s[m]==x) return m;
return -1;
}
int main()
{
int n, m, i, j, x, y, z;
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
scanf("%d%d",&n,&m); s[0]=0;
for (i=1; i<=n; i++) {scanf("%d",&a[i]); s[i]=s[i-1]+a[i];}
for (i=1; i<=m; i++)
{
scanf("%d",&z);
if (z==0)
{
scanf("%d%d",&x,&y); a[x]+=y;
for (j=x; j<=n; j++) s[j]+=y;
}
else if (z==1)
{
scanf("%d%d",&x,&y);
int sum=s[y]-s[x-1];
printf("%d\n",sum);
}
else if (z==2)
{
scanf("%d",&x);
int rez=cb(x,n);
printf("%d\n",rez);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}