Pagini recente » Cod sursa (job #2219793) | Cod sursa (job #1034037) | Cod sursa (job #132582) | Cod sursa (job #1773240) | Cod sursa (job #1695386)
#include <iostream>
#include <fstream>
#define maxN 15000
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,aint[3*maxN];
int poz, val, start, finish, S, Q;
void update(int nod, int st, int dr)
{
if (st==dr)
{
aint[nod]+=val;
return;
}
int mid=(st+dr)/2;
if (poz<=mid) update(2*nod, st, mid);
else update(nod*2+1, mid+1, dr);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
void query(int nod, int st, int dr)
{
if (start<=st && dr<=finish)
{
S+=aint[nod];
return;
}
int mid=(st+dr)/2;
if (start<=mid) query(nod*2, st, mid);
if (mid<finish) query(nod*2+1, mid+1, dr);
}
int main()
{
fin>>n>>m;
for (int i=1; i<=n; ++i)
{
fin>>val;
poz=i;
update(1,1,n);
}
while (m--)
{
fin>>Q;
if (!Q)
{
fin>>poz>>val;
val*=-1;
update(1,1,n);
}
else
{
fin>>start>>finish;
S=0;
query(1,1,n);
fout<<S<<'\n';
}
}
return 0;
}