Pagini recente » Cod sursa (job #2108030) | Cod sursa (job #2035574) | Cod sursa (job #1918028) | Cod sursa (job #1982244) | Cod sursa (job #2042215)
#include <fstream>
#define DIM 100001
using namespace std;
ifstream fin ("aib.in");
ofstream fout ("aib.out");
int n,m,i,j,st,dr,mid,c,x,y,a[DIM];
int query (int p){
int r = 0;
for (;p;p-=(p&-p) )
r += a[p];
return r;
}
int update (int p,int x){
for (;p<=n;p+=(p&-p))
a[p] += x;
}
int main (){
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>x;
update (i,x);
}
for (i=1;i<=m;i++){
fin>>c;
if (c == 0){
fin>>x>>y;
update (x,y);
}
else{
if (c == 1){
fin>>x>>y;
fout<<query (y) - query (x-1)<<"\n";
}
else{
fin>>x;
st = 1;
dr = n;
while (st<=dr){
mid = (st + dr)/2;
if (query(mid) < x)
st = mid+1;
else
dr = mid-1;
}
if (query(st) == x)
fout<<st<<"\n";
else
fout<<-1<<"\n";
}
}
}
return 0;
}