Cod sursa(job #3148825)

Utilizator dragutamihai1234Draguta Mihai dragutamihai1234 Data 4 septembrie 2023 16:10:26
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int N, Q, x, y, type, mid;

vector<int> BIT;
void Update(int i, int val){
    while(i <= N){
        BIT[i] += val;
        i += (i & -i);
    }
}
int Querry(int i){
    int sum = 0;
    while(i > 0){
        sum += BIT[i];
        i -= (i & -i);
    }
    return sum;
}
int Range_Querry(int i, int j){
    return Querry(j) - Querry(i - 1);
}
int main()
{

    fin >> N >> Q;
    BIT.resize(N + 1, 0);
    for(int i = 1; i <= N; i ++)
    {
        fin >> x;
        Update(i, x);
    }
    for(int i = 1; i <= Q; i ++)
    {
        fin >> type;
        if(type == 0){

            fin >> x >> y;
            Update(x, -y);
        }
        else {
            fin >> x >> y;
            fout << Range_Querry(x, y) << '\n';
        }

    }
    return 0;
}