Pagini recente » Cod sursa (job #899288) | Cod sursa (job #1315244) | Cod sursa (job #2544444) | Cod sursa (job #1237675) | Cod sursa (job #2785869)
#include <bits/stdc++.h>
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define bmin(a,b)((a<b)?(a):(b))
#define bmax(a,b)((a>b)?(a):(b))
#define ll long long
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
long long n,m,a[500000],i,j,k=1,x,y,z;
int main()
{
in>>n>>m;
while(k<n)k<<=1;
for(i=k;i<k+n;i++)in>>a[i];
i=k;
while(--i)a[i]=a[i*2]+a[i*2+1];
//for(i=1;i<2*k;i++)cout<<a[i]<<'\n';
while(m--)
{
in>>x>>y;
if(x==0)
{
in>>z;
y+=k-1;
while(y)a[y]-=z,y>>=1;
}
else if(x==1)
{
in>>z,x=0,y+=k-1,z+=k-1;
while(y!=z)
{
if(y&1)x-=a[y-1];
if(~z&1)x-=a[z+1];
y/=2,z/=2;
}
out<<x+a[y]<<'\n';
}
else{
i=1;
while(i<k)
if(y>a[i*2])
y-=a[i*2],i=i*2+1;
else i*=2;
if(y==a[i])out<<i-k+1<<'\n';else out<<"-1\n";
}
}
}