Pagini recente » Cod sursa (job #2796925) | Cod sursa (job #3281637) | Cod sursa (job #494230) | Cod sursa (job #2952231) | Cod sursa (job #2952860)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
#define ultb(i) (i&(-i))
void update(int aib[],int poz,int lun, int nract)
{
for (int i=poz;i<=lun;i+=ultb(i))
{
aib[i]+=nract;
}
}
void scade(int aib[],int poz,int lun, int nract)
{
for (int i=poz;i<=lun;i+=ultb(i))
{
aib[i]-=nract;
}
}
int sum(int aib[],int poz)
{
int s=0;
for (int i=poz;i>0;i-=ultb(i))
{
s+=aib[i];
}
return s;
}
int sum2(int aib[],int pma, int pmi)
{
int s=sum(aib,pma)-sum(aib,pmi-1);
return s;
}
int main()
{
int lun,cer;
in >> lun >> cer;
int aib[lun];
for (int i =1;i<=lun;i++)
{
aib[i]=0;
}
int nract;
for (int i=1;i<=lun;i++)
{
in>>nract;
update(aib,i,lun,nract);
}
int ceract;
int t,v;
while (cer--)
{
in >> ceract;
in>>t>>v;
if (ceract==0)
{
scade(aib,t,lun,v);
}
if (ceract==1)
{
out << sum2(aib,v,t) << "\n";
}
}
}
///radu dumitriu copyright all rights reserved 2022 TM