Pagini recente » Cod sursa (job #222701) | Cod sursa (job #576868) | Cod sursa (job #407945) | Cod sursa (job #3140552) | Cod sursa (job #1036421)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[150000], n, x, m, a, b, t, sq, batog[100000];
void update(int p, int val){
v[p]+=val;
int poz;
if(p%sq==0) poz=p/sq-1;
else poz=p/sq;
for(int j=poz; j<=sq; ++j) batog[j] += val;
//cout<<"bag: "<<val<<" in "<<poz<<'\n';
//batog[poz]+=val;
}
int query(int x){
int sum=0;
while(x%sq!=0) sum+=v[x], x--;
//x--;
//for(int i=x/sq-1; i>=0; --i)
sum+=batog[x/sq-1];
return sum;
}
int main()
{
f>>n>>m;
sq=(int)sqrt(n);
for(int i=1; i<=n; ++i){
f>>x;
update(i, x);
}
//for(int j=1; j<=sq; ++j) batog[j] += batog[j - 1];
//cout<<m;
while(m--){
f>>t; //cout<<t<<"<-------";
f>>a>>b;
if(t==0) update(a, -b);
else if(t==1) g<<query(b)-query(a-1)<<'\n';
}
//for(int j=0; j<=sq; ++j) cout<<batog[j]<<' ';
return 0;
}