Pagini recente » Cod sursa (job #2105206) | Cod sursa (job #1207288) | Cod sursa (job #1144317)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int a[60009],t[15009],n;
void mk_arb(int p, int s, int d){
if(s==d){
a[p]=t[s];
}
else{
int m=(s+d)>>1;
mk_arb((p<<1), s, m);
mk_arb(((p<<1) + 1), m+1, d);
a[p]=a[p<<1] + a[(p<<1) + 1];
}
}
int vl_arb(int p, int l, int r, int s, int d){
if(s > d){
return 0;
}
else{
if(l==s && d==r)
return a[p];
else{
int m=(l+r)>>1;
return vl_arb(p<<1, l , m, s, min(m,d)) + vl_arb(((p<<1) +1), m+1, r, max(s,m+1), d);
}
}
}
void svl_arb(int x, int v){
int p=1,s=1,d=n,m;
while(s!=d){
m=(s+d)/2;
a[p]-=v;
if(x<=m){
d=m;
p<<=1;
}
else{
s=m+1;
p<<=1;
p++;
}
}
a[p]-=v;
}
int main(){
int m,i,b,p,q;
f>>n>>m;
for(i=1; i<=n; ++i)
f>>t[i];
mk_arb(1,1,n);
for(i=1; i<=m; ++i){
f>>b>>p>>q;
if(b){
g<<vl_arb(1,1,n,p,q)<<"\n";
}
else{
svl_arb(p,q);
}
}
return 0;
}