Pagini recente » Cod sursa (job #103722) | Cod sursa (job #1275759) | Cod sursa (job #1247591) | Cod sursa (job #492531) | Cod sursa (job #2383325)
#include <fstream>
using namespace std;
#define maxn 100001
ifstream cin("aib.in");
ofstream cout("aib.out");
int N,M,s[maxn],op;
void read(int N){
s[0]=0;
for(int i=1; i<=N; i++){
cin>>s[i];
s[i]+=s[i-1];
}
}
void solve(int op){
int x,y;
if(op==0){
cin>>x>>y;
for(;x<=N; x++)
s[x]+=y;
} else if(op==1){
cin>>x>>y;
cout<<s[y]-s[x-1]<<'\n';
}else if(op==2){
cin>>x;
int st=1,dr=N,mij,ok=0;
while(!dr<st){
mij=(dr+st)/2;
if(s[mij]==x){
ok=1;
break;
}else if(x>s[mij]){
st=mij+1;
}else dr=mij-1;
}
if(ok==1)
cout<<mij<<'\n';
else cout<<-1<<'\n';
}
}
int main()
{
cin>>N>>M;
read(N);
for(;M;M--){
cin>>op;
solve(op);
}
}