Cod sursa(job #3138731)

Utilizator SSKMFSS KMF SSKMF Data 21 iunie 2023 19:36:38
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
using namespace std;

ifstream cin ("datorii.in");
ofstream cout ("datorii.out");

int zile , arbore[15001];

int Suma (int indice)
{
    int suma = 0;
    while (indice) {
        suma += arbore[indice];
        indice -= (indice & -indice);
    }

    return suma;
}

void Update (int indice , int valoare)
{
    while (indice <= zile) {
        arbore[indice] += valoare;
        indice += (indice & -indice);
    }
}

int main ()
{
    int operatii;
    cin >> zile >> operatii;

    for (int indice = 1 , valoare ; indice <= zile ; indice++)
        cin >> valoare ,  Update(indice , valoare);
    
    for (int indice = 1 , tip ; indice <= operatii ; indice++)
    {
        cin >> tip;

        if (tip == 0) {
            int zi , valoare;
            cin >> zi >> valoare;
            Update(zi , -valoare);
        }
        else {
            int stanga , dreapta;
            cin >> stanga >> dreapta;
            cout << Suma(dreapta) - Suma(stanga - 1) << '\n';
        }
    }

    cout.close(); cin.close();
    return 0;
}