Pagini recente » Cod sursa (job #445753) | Cod sursa (job #3168298) | Cod sursa (job #2475796) | Cod sursa (job #3217694) | Cod sursa (job #1902721)
#include <bits/stdc++.h>
using namespace std;
ifstream f("aib.in");
ofstream g("aib.out");
void add(int,int);
int n,m,a,b,c,i,lo,hi,mi,v[100010],suma(int);
int main(){
f>>n>>m;
for(i=1;i<=n;i++){f>>a;add(i,a);}
for(;m;m--){
f>>c;
if(c==0){f>>a>>b;add(a,b);continue;}
if(c==1){f>>a>>b;g<<suma(b)-suma(a-1)<<'\n';continue;}
for(f>>a,lo=0,hi=n;hi-lo>1;){mi=(lo+hi)/2;if(suma(mi)<a)lo=mi;else hi=mi;}
if(suma(hi)!=a)hi=-1;
g<<hi<<'\n';
}
return 0;
}
void add(int i,int x){for(;i<=n;i+=i&(-i))v[i]+=x;}
int suma(int i){int x=0;for(;i;i-=i&(-i))x+=v[i];return x;}