Cod sursa(job #113121)

Utilizator SharpeBigadrian ursulescu SharpeBig Data 8 decembrie 2007 20:32:52
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <iostream>
#include <fstream>
using namespace std;
   ifstream fin("datorii.in");
   ofstream fout("datorii.out");
   int a,b,c,i,n,m,A[16000]={0},B[16000]={0};
   void adauga(int x,int cat){   while(x<=n) A[x]+=cat,x=x +(x^(x&(x-1)));}
   int  extrage(int x)
   { int rezultat=0;
     while(x>0) rezultat+=A[x],x=x-(x^(x&(x-1)));
     return rezultat;
   }
int main()
{ fin>>n>>m;for(i=1;i<=n;fin>>B[i],B[i]+=B[i-1],i++);
  for(i=1;i<=m;i++)
  { fin>>a>>b>>c;
    if(!a) adauga(b,c);else
    fout<<B[c]-B[b-1]-(extrage(c)-extrage(b-1))<<endl; 
  }  
  fin.close();fout.close();  
  return 0;   
}