Pagini recente » Statistici Baciu Mara Teodora (marabaciu) | Cod sursa (job #126664) | Cod sursa (job #1600549) | Cod sursa (job #1683919) | Cod sursa (job #1231333)
#include<fstream>
using namespace std;
int n, m, i, ii, j, a[100007], p, u, x, op, s, k, mij;
ifstream in("aib.in");
ofstream out("aib.out");
int main(){
in>>n>>m;
for(i=1; i<=n; i++){
in>>x;
for(j=i; j<=n; j+=(j&-j))
a[j]+=x;
}
for(;m--;){
in>>op;
if(op==0){
in>>p>>x;
for(i=p; i<=n; i+=(i&-i))
a[i]+=x;
}
if(op==1){
in>>p>>u;
s=0;
for(i=u; i>0; i-=(i&-i))
s+=a[i];
for(i=p-1; i>0; i-=(i&-i))
s-=a[i];
out<<s<<"\n";
}
if(op==2){
ii=99999999;
in>>k;
p=1; u=n;
s=0;
while(p<=u){
s=0;
mij=p+(u-p)/2;
for(i=mij; i>0; i-=(i&-i))
s+=a[i];
if(s==k && mij<ii)
ii=mij;
if(s>=k)
u=mij-1;
else
p=mij+1;
}
ii!=99999999?out<<ii<<"\n":out<<"-1";
}
}
}