Cod sursa(job #2410443)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 20 aprilie 2019 08:33:31
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
#define DIM 15005
using namespace std;
ifstream f ("datorii.in") ;
ofstream g ("datorii.out") ;
int N , M , cer , a , b;
int AIB[DIM] , x;
void Update (int poz , int val)
{
    for (int i = poz ; i <= N ; i += i&(-i))
        AIB[i] += val;
    return ;
}
int Query(int poz)
{
        int sum = 0 ;
        for (int i = poz ; i >= 1 ; i -= i & (-i))
        sum += AIB[i] ;

      return sum ;
}
int main()
{
    f >> N >> M ;
    for (int i = 1 ; i <= N ; ++i)
        {
        f >> x ;
        Update(i,x) ;
        }
    for (int i = 1 ; i <= M ; ++i)
    {
        f >> cer >> a >> b;
        if (cer == 0)
                Update(a,-b) ; // se scade
            else
                g << Query(b) - Query(a-1) << '\n';// Suma dintre a si b , ca la sume partiale
    }
    f.close();
    g.close();
    return 0;

}