Pagini recente » Cod sursa (job #2438925) | Cod sursa (job #942428) | Cod sursa (job #96231) | Cod sursa (job #2496733) | Cod sursa (job #1255775)
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,k,i,arbore[1000],v[1000],l,r,t,tip;
void plata(int st,int dr,int p)
{
if(st==dr)
{
arbore[p]=arbore[p]-r;
return ;
}
else
{
int mij=(st+dr)/2;
if(mij+1<=l)
plata(mij+1,dr,p*2+1);
else
plata(st,mij,p*2);
}
}
void suma(int st,int dr,int p)
{
if(l<=st && dr<=r)
k=k+arbore[p];
else
{
int mij=(st+dr)/2;
if(mij+1<=r)
suma(mij+1,dr,p*2+1);
if(mij>=l)
suma(st,mij,p*2);
}
}
void prima_umplere(int st,int dr,int p)
{
if(st==dr)
{
arbore[p]=v[k];
k++;
}
else
{
int mij=(st+dr)/2;
prima_umplere(st,mij,p*2);
prima_umplere(mij+1,dr,p*2+1);
arbore[p]=arbore[p*2]+arbore[p*2+1];
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>v[i];
}
k=1;
prima_umplere(1,n,1);
for(i=1;i<=m;i++)
{
fin>>tip>>l>>r;
if(tip)
{
k=0;
suma(1,n,1);
fout<<k<<"\n";
}
else
plata(1,n,1);
}
return 0;
}