Pagini recente » Cod sursa (job #676363) | Cod sursa (job #622960) | Cod sursa (job #997713) | Cod sursa (job #1074934) | Cod sursa (job #1204225)
#include <fstream>
using namespace std;
int n,m,x,y,tip,adi[60005],sum;
void init(int st,int dr,int nod)
{
if (st==dr)
{
adi[nod]-=y;
}else
{
int m=(st+dr)/2;
if (x<=m) init(st,m,nod*2);else init(m+1,dr,2*nod+1);
adi[nod]=adi[nod*2]+adi[nod*2+1];
}
}
void scoate(int st,int dr,int nod)
{
if (x<=st && dr<=y)
{
sum+=adi[nod];
}else
{
int m=(st+dr)/2;
if (x<=m) scoate(st,m,nod*2);
if (y>m) scoate(m+1,dr,nod*2+1);
}
}
int main()
{
ifstream in ("datorii.in");
ofstream out ("datorii.out");
in>>n>>m;
for (int i=1;i<=n;++i)
{
in>>y;
x=i;
y=-y;
init(1,n,1);
}
for (int i=1;i<=m;++i)
{
in>>tip>>x>>y;
if (tip==0)
{
init(1,n,1);
}else
{
sum=0;
scoate(1,n,1);
out<<sum<<"\n";
}
}
in.close();
out.close();
return 0;
}