Cod sursa(job #1380141)

Utilizator teodor98Teodor Sz teodor98 Data 6 martie 2015 22:20:53
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int N=100001;
int AIB[N];
int n,m;
inline int zeros(int x)
{
  return ((x^(x-1)) & x);
}
int modul(int x)
{
  if(x < 0)
    return -x;
  return x;
}
void add(int x,int q)
{
    for(int i=x;i<=n;i+=zeros(i))
    {
        AIB[i] += q;
    }
}
int compute(int x)
{
    int rez=0;
    for(int i=x;i>0;i-=zeros(i))
    {
        rez+=AIB[i];
    }
    return rez;
}
int main()
{
   in >> n >> m;
   for(int i=1;i<=n;i++)
   {
      int x;
      in >> x;
      add(i,-x);
   }
   for(int j=1;j<=m;j++)
   {
     int x,y,z;
     in >> x >> y >> z;
     if(x == 0)
       add(y,z);
     if(x == 1)
       out << modul(compute(z) - compute(y-1)) << "\n";


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