Cod sursa(job #2378316)

Utilizator ApetriiRaduApetrii Radu ApetriiRadu Data 11 martie 2019 23:38:02
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
#define NMAX 15005
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");

int n,m;
int v[NMAX];
int aib[NMAX];

void citire();
void add(int poz,int val);
void rezolvare();
int sum(int x);
int main()
{citire();
 rezolvare();
 return 0;
}
void citire()
{int i;
 fin>>n>>m;
 for(i=1;i<=n;i++)
     {fin>>v[i];
      add(i,v[i]);
     }
}
void add(int poz,int val)
{int i;
 for(i=poz;i<=n;i+=zeros(i))
    aib[i]+=val;
}
void rezolvare()
{int i,cer,x,y;
 for(i=1;i<=m;i++)
    {fin>>cer>>x>>y;
     if(cer==0)
        add(x,-y);
        else
            fout<<sum(y)-sum(x-1)<<'\n';
    }
}
int sum(int x)
{int i,cat=0;
 for(i=x;i>0;i-=zeros(i))
     cat+=aib[i];
 return cat;
}