Cod sursa(job #582979)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 16 aprilie 2011 21:43:54
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#define N 15001
int n,x,y,z,i;
long a[N],c[N],j,m,s1,s2;
int main()
{freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%ld\n",&n,&m);
a[0]=0;
for(i=1;i<=n;i++)
      {scanf("%ld",&a[i]);
      a[i]+=a[i-1];
      j=i-(i&(-i));
      c[i]=a[i]-a[j];}
for(j=1;j<=m;j++)
      {scanf("%d%d%d\n",&x,&y,&z);
      if(x==0)
              {while(y<=n)
                      {c[y]-=z;
                      y+=(y&(-y));}}
      else
              {s1=s2=0;
              while(z>0)
                        {s1+=c[z];
                        z-=(z&(-z));}
              y--;
              while(y>0)
                        {s2+=c[y];
                        y-=(y&(-y));}
              printf("%ld\n",s1-s2);}}
fclose(stdin);
fclose(stdout);
return 0;}