Cod sursa(job #81777)

Utilizator alex23alexandru andronache alex23 Data 4 septembrie 2007 13:51:57
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <stdio.h>


int a[20000],c[20000],n,m,i,j,k,w,p,q,s1,s2;

int main()
{FILE *fin,*fout;


 fin=fopen("datorii.in","r");
 fout=fopen("datorii.out","w");
 fscanf(fin,"%d %d",&n,&m);
 for (i=1;i<=n;i++)
    {fscanf(fin,"%d",&a[i]);
     c[i]=0;
     k=i&(i^(i-1));
     for (j=i-k+1;j<=i;j++)
        c[i]+=a[j];
     }
 for (i=1;i<=m;i++)
    {fscanf(fin,"%d %d %d",&w,&p,&q);
     if (w==0)
                while (p<=n)
                  {c[p]=c[p]-q;
                   k=p&(p^(p-1));
                   p=p+k;
                   }
          else {
                s1=0;
                while (q>0)
                   {s1+=c[q];
                    k=q&(q^(q-1));
                    q=q-k;
                    }
                s2=0;
                p--;
                while (p>0)
                   {s2+=c[p];
                    k=p&(p^(p-1));
                    p=p-k;
                    }
                fprintf(fout,"%d\n",s1-s2);
                }
    }


 fclose(fin);
 fclose(fout);
 /*fout=fopen("datorii.out","w");
 for (i=1;i<=n;i++)
    fprintf(fout,"%d ",c[i]);
 fclose(fout);
   */
 return 0;

}