Pagini recente » Cod sursa (job #1670863) | Cod sursa (job #1084588) | Cod sursa (job #730290) | Cod sursa (job #2384437) | Cod sursa (job #369732)
Cod sursa(job #369732)
#include<fstream.h>
long n,m;
int c[101],a;
void scadere(int i, int x)
{
int k=0;
while(i<=n)
{
c[i]-=x;
while((i&(1<<k))==0)k++;
i+=(1<<k);
k++;
}
}
int suma(int i)
{
int s=0,k=0;
while(i>0)
{
s+=c[i];
while((i&(1<<k))==0)k++;
i-=(1<<k);
k++;
}
return s;
}
void creare(int i)
{
int k=0;
c[i]+=a;
while((i&(1<<k))==0)k++;
c[i]+=(suma(i-1)-suma(i-(1<<k)));
}
int main()
{
int i,x,y;
ifstream f("datorii.in");
ofstream g("datorii.out");
f>>n>>m;
for(i=1;i<=n;i++){f>>a;creare(i);}
for(i=1;i<=m;i++)
{
f>>a;
if(a)
{
f>>x>>y;
g<<suma(y)-suma(x-1)<<'\n';
}
else
{
f>>x>>y;
scadere(x,y);
}
}
g.close();
return 0;
}