Pagini recente » Cod sursa (job #1855655) | Cod sursa (job #2165931) | Cod sursa (job #1714089) | Cod sursa (job #1618291) | Cod sursa (job #1396755)
#include <fstream>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include<string>
using namespace std;
ifstream cin("aib.in");
ofstream cout("aib.out");
int n, i, j, m, a, b, T[100005], c[11], x, y, k, o;
void Update(int idx, int val){
while (idx<=n)
{
T[idx]+=val;
idx+=idx & -idx;
}
}
int Del(int y, int x){
int s=0;
while(x)
{
s+=T[x];
x-=x & -x;
}
--y;
while(y)
{
s-=T[y];
y-=y & -y;
}
return s;
}
int main()
{
cin>>n>>m;
for(i=1; i<=n; ++i)
cin>>x, Update(i, x);
for(i=1; i<=m; ++i){
cin>>o;
if (o==0)
cin>>a>>b,
Update(a, b);
else if(o==1)
cin>>a>>b,
cout<<Del(a, b)<<'\n';
else if(o==2)
{
cin>>a;
x=1; y=n; b=0;
while (x<=y && b==0)
{
int m=(x+y)/2;
if (a==T[m]) b=m;
else if (a<T[m])
y=m-1;
else if (a>T[m])
x=m+1;
}
if (b==0) b=-1;
cout<<b<<'\n';
}
}
return 0;
}