Pagini recente » Cod sursa (job #869851) | Cod sursa (job #2906752) | Cod sursa (job #1177794) | Cod sursa (job #1686617) | Cod sursa (job #2567057)
#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int const lim= 15001;
int n,m,v[4*lim+66],poz,val,a,b,d[lim];
long long sum;
void act(int nod , int st , int dr)
{
if(st==dr)
{
v[nod]=val;
return;
}
int mij=(st+dr)/2;
if(poz<=mij) act(nod*2,st,mij);
else act(nod*2+1,mij+1,dr);
v[nod]=v[nod*2]+v[nod*2+1];
}
void ask( int nod , int st ,int dr)
{
if(a<=st && dr<=b)
{
sum=sum+v[nod];
return;
}
int mij=(st+dr)/2;
if(a<=mij) ask(nod*2,st,mij);
if(mij<b) ask(nod*2+1,mij+1,dr);
}
int main()
{
in>>n>>m;
for(int i=1;i<=n;i++)
{
in>>d[i];
poz=i;
val=d[i];
act(1,1,n);
}
for(int i=1;i<=m;i++)
{
int x;
in>>x;
if(x==0)
{
int y,z;
in>>y>>z;
poz=y;
val=d[y]-z;
act(1,1,n);
d[y]=d[y]-z;
}
else
{
int y,z;
in>>y>>z;
a=y;
b=z;
sum=0;
ask(1,1,n);
out<<sum<<'\n';
}
}
}