Cod sursa(job #86917)

Utilizator infogodinfo god infogod Data 25 septembrie 2007 22:17:01
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream.h>
#include<math.h>

int n, a[15000], v, t, p, q, ok;
long long m;

int main()
{
  int j, s, poz,s2;
  long i;
  ifstream in("datorii.in");
  ofstream out("datorii.out");
  in>>n>>m;
  for (j=1; j<=n; j++)
    in>>a[j];
  for (i=1; i<=m; i++)
    {
     in>>ok;
     if (ok==0)
       {
	 in>>t>>v;
	 poz=0;
	 while (t<=n)
	  {
	    a[t]+=v;
	    while(t==0 && pow(2,poz) == 0)
	      poz++;
	    t+=pow(2,poz);
	    poz++;
	  }
       }
	else
	  {
	    in>>p>>q;
	    s=0; poz=0;
	    while(p>0)
	      {
		s+=a[p];
		while (p==0 && pow(2,poz)==0)
		   poz++;
		p-=pow(2,poz);
		poz++;
	      }
	q-=1;
	s2=0;
	poz=0;
	while (q>0)
	  {
	    s2+=a[q];
	    while (q==0 && pow(2,poz)==0) poz++;
	    q-=pow(2,poz);
	    poz++;
	  }
	out<<s-s2<<'\n';
      }
    }



  in.close();
  out.close();
  return 0;
}