Pagini recente » Cod sursa (job #2591081) | ONIS 2014, Clasament Runda 1 | Cod sursa (job #1095391) | Cod sursa (job #425237) | Cod sursa (job #3215111)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int v[100001], n, m, c, a, b, i, j, st, dr, mij, k, p;
long long int suma, tree[100001], s1, s2;
int main()
{
fin>>n>>m;
for(i=1; i<=n; i++){fin>>v[i];}
for(i=1; i<=n; i++){
p=i&(-i);
for(k=1; k<=p; k++){
tree[i]+=v[i-p+k];
}
}
for(i=1; i<=m; i++){
fin>>c;
if(c==0){
fin>>a>>b;
while(a<=n){
tree[a]=tree[a]+b;
a=a+(a&-a);
}
}
else if(c==1){
fin>>a>>b;
s1=0;
s2=0;
while(b>=1){
s1+=tree[b];
b=b-(b&-b);
}
a--;
while(a>=1){
s2+=tree[a];
a=a-(a&-a);
}
fout<<s1-s2<<endl;
}
else{
fin>>a;
k=1;
s1=0;
while(k<=n){
s1=tree[k];
if(a==s1){fout<<k<<endl; break;}
k=k+(k&-k);
}
}
}
}