Pagini recente » Cod sursa (job #1940051) | Cod sursa (job #3285218) | Cod sursa (job #690733) | Cod sursa (job #1516857) | Cod sursa (job #789119)
Cod sursa(job #789119)
using namespace std;
#include<cstdio>
#include<vector>
#define nmax 15001
#define value y
#define day x
inline int t_zeros(int x)
{
int i;
for(i=0;!(((x^(x-1))&x)&(1<<i-1));i++);
return i;
}
FILE *g=fopen("datorii.out","w");
vector<long int> v(nmax);
vector<long int> c(nmax,0);
int main ()
{
unsigned int n,m,op,x,y,i;
long sx,sy;
FILE *f=fopen("datorii.in","r");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
for(i=1;i<=n;i++)
{
if(t_zeros(i)) op=i-(1<<(t_zeros(i)-1))+1;
else op=i;
for(;op<=i;++op)
c[i]+=v[op];
}
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d%d",&op,&x,&y);
if(op&1)
{
sx=sy=0;
--x;
while(x)
{
sx+=c[x];
if(t_zeros(x)) x-=1<<(t_zeros(x)-1);
else --x;
}
while(y)
{
sy+=c[y];
if(t_zeros(y)) y-=1<<(t_zeros(y)-1);
else --y;
}
fprintf(g,"%ld\n",sy-sx);
}
else
while(x<=n)
c[x]-=y,(t_zeros(x)) ?x+=1<<(t_zeros(x)-1):x++;
}
fclose(f);
fclose(g);
return 0;
}