Pagini recente » Cod sursa (job #2138216) | Cod sursa (job #2817519) | Cod sursa (job #1225656) | Cod sursa (job #1121228) | Cod sursa (job #2923868)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("aib.in");
ofstream cout("aib.out");
class Fenwick {
private:
int n;
vector<int> aib;
int query(int node) {
int ix=node,sum=0;
while(ix>0) {
sum+=aib[ix];
ix-=(ix & (~ix+1));
}
return sum;
}
public:
void init(int n) {
this->n=n;
aib.resize(n+1);
}
void update(int node,int val) {
int ix=node;
while(ix<=n) {
aib[ix]+=val;
ix+=(ix & (~ix+1));
}
}
int query(int l,int r) {
return query(r)-query(l-1);
}
};
int n,m;
vector<int> v;
void read() {
cin>>n>>m;
v.resize(n+1);
for(int i=1;i<=n;i++) {
cin>>v[i];
}
}
void solve() {
int a,b,c;
Fenwick obj;
obj.init(n);
for(int i=1;i<=n;i++) {
obj.update(i,v[i]);
}
// cout<<obj.query(1,8);
// return;
for(int i=1;i<=m;i++) {
cin>>a>>b;
if(a==0) {
cin>>c;
obj.update(b,c);
}
else if(a==1) {
cin>>c;
cout<<obj.query(b,c)<<"\n";
}
else {
int res=-1;
for(int j=1;j<=n;j++) {
if(obj.query(1,j)==b) {
res=j;
break;
}
}
cout<<res<<"\n";
}
}
}
int main() {
read();
solve();
return 0;
}