Cod sursa(job #2284577)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 17 noiembrie 2018 11:41:31
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
#define indice(j) (j&(-j))
using namespace std ;
ifstream f("datorii.in");
ofstream g ("datorii.out");
int N , M , AIB[15010] , X , cerinta , B , C ;
void update (int i , int x) // a[i] += x
{
    int j ;
    for (j = i ; j <= N ; j += indice(j))
        AIB[j] += x;
}
int querry (int i) // suma de la '1' la 'i'
{
    int j , s = 0 ;
    for (j = i ; j >= 1 ; j -= indice(j))
        s += AIB[j];
    return s;

}
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 >> cerinta >> B >> C;
            if (cerinta == 0) {update(B , -C);}
            else {g << querry(C) - querry(B-1) << '\n';     }
    }
    return 0 ;

}