Pagini recente » Borderou de evaluare (job #3364219) | Cod sursa (job #3364246) | Cod sursa (job #3364232) | Borderou de evaluare (job #3364250) | Cod sursa (job #3364239)
#include <fstream>
#include<queue>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<climits>
#include<deque>
#include<unordered_map>
#include<unordered_set>
#include<string>
#define lsb(x) (x & (-x))
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
vector<long long>aib;
int v[15002];
void aibup(int k,int vl){
for(int i=k;i<aib.size();i+=lsb(i))aib[i]+=vl;
}
long long aibsum(int x){
long long s=0;
for(int i=x;i>0;i-=lsb(i))s+=aib[i];
return s;
}
int main()
{
int n,q;
cin>>n>>q;
aib.resize(n+1,0);
for(int i=1;i<=n;i++){
cin>>v[i];
aibup(i,v[i]);
}
while(q--){
int op,a,b;
cin>>op>>a>>b;
if(op==0){
aibup(a,-b);
v[a]-=b;
}
else cout<<aibsum(b)-aibsum(a-1)<<"\n";
}
return 0;
}