Pagini recente » Cod sursa (job #452167) | Cod sursa (job #2249059) | Cod sursa (job #1177067) | Cod sursa (job #2564786) | Cod sursa (job #2632021)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int v[15001*4];
int n, m, val, pos, start, fin, sum, cer;
void update(int nod, int st, int dr)
{
if(st==dr)
{
v[nod]+=val;
return;
}
int med=(st+dr)/2;
if(pos<=med) update(2*nod, st, med);
else update(2*nod+1, med+1, dr);
v[nod]=v[2*nod]+v[2*nod+1];
}
void query(int nod, int st, int dr)
{
if(st>=start && dr<=fin)
{
sum+=v[nod];
return;
}
int med=(st+dr)/2;
if(start<=med) query(2*nod, st, med);
if(fin>med) query(2*nod+1, med+1, dr);
}
void readit()
{
in>>n>>m;
for(int i=1; i<=n; i++)
{
in>>val;
pos=i;
update(1, 1, n);
}
while(m--)
{
in>>cer>>start>>fin;
if(cer==0)
{
pos=start, val=-fin;
update(1, 1, n);
}
else
{
sum=0;
query(1, 1, n);
out<<sum<<'\n';
}
}
}
int main()
{
readit();
return 0;
}