Pagini recente » Cod sursa (job #2642153) | Cod sursa (job #587736) | Cod sursa (job #1834712) | Cod sursa (job #1044263) | Cod sursa (job #1740974)
#include<fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,i,a,b,arb[60001],poz,val,s,v[15001],j;
void creare(int nod,int st,int dr){
int mij;
if (st==dr){
arb[nod]=val;
return;
}
mij=(st+dr)/2;
if (poz<=mij) creare(2*nod,st,mij);
else
creare(2*nod+1,mij+1,dr);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void suma(int nod,int st,int dr){
int mij;
if (a<=st && dr<=b){
s=s+arb[nod];
return;
}
mij=(st+dr)/2;
if (a<=mij) suma(2*nod,st,mij);
if (mij<b) suma(2*nod+1,mij+1,dr);
}
int main(){
fin>>n>>m;
for (i=1;i<=n;i++){
fin>>j;
poz=i;val=j;
v[i]=j;
creare(1,1,n);
}
for (i=1;i<=m;i++)
{
fin>>val>>a>>b;
if (val==0){
poz=a;
val=-b;
creare(1,1,n);
}
else{
s=0;
suma(1,1,n);
fout<<s<<'\n';
}
}
fin.close();
fout.close();
return 0;
}