Pagini recente » Cod sursa (job #1112085) | Cod sursa (job #2284306) | Istoria paginii runda/ffcxzczxczx/clasament | Cod sursa (job #820191) | Cod sursa (job #828596)
Cod sursa(job #828596)
#include<fstream>
#define NMAX 32767
using namespace std;
int v[NMAX],n,m;
int p,q;
ifstream in("datorii.in");
ofstream out("datorii.out");
void addToTree(int st,int dr,int k)
{
if (st==dr)
{
v[k]+=q;
return;
}
int mij=(st+dr)/2;
if (p<=mij)
addToTree(st,mij,2*k);
else addToTree(mij+1,dr,2*k+1);
v[k]=v[2*k]+v[2*k+1];
}
void scan()
{
in>>n>>m;
for (int i=1;i<=n;i++)
{
in>>q;
p=i;
addToTree(1,n,1);
}
}
int query(int st, int dr, int k)
{
int s=0;
if (p<=st && dr<=q)
{
return v[k];
}
int mij;
mij=(st+dr)/2;
if (p<=mij)
s=s+query(st,mij,2*k);
if (q>mij)
s=s+query(mij+1,dr,2*k+1);
return s;
}
void solve()
{
int o;
for (int i=1;i<=m;i++)
{
in>>o>>p>>q;
if (!o)
{
q=q*(-1);
addToTree(1,n,1);
}
else out<<query(1,n,1)<<"\n";
}
}
int main()
{
scan();
solve();
return 0;
}