Cod sursa(job #2350529)

Utilizator gazdac_alex@yahoo.comGazdac Alexandru Eugen [email protected] Data 21 februarie 2019 15:09:20
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;

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

const int NMax = 15000;

int N, M, p, a, b, AIB[NMax + 5];

void Update(int P, int V)
{
    for(int i = P; i <= N; i += (i & (-i)))
        AIB[i] += V;
}

int Sum(int P)
{
    int Sol = 0;

    for(int i = P; i > 0; i -= (i & (-i)))
        Sol += AIB[i];

    return Sol;
}

int main()
{
    fin >> N >> M;

    for(int i = 1; i <= N; i++)
        fin >> a, Update(i, a);

    for(int i = 0; i < M; i++)
    {
        fin >> p >> a >> b;

        if(p == 0)
            Update(a, -b);
        if(p == 1)
            fout << Sum(b) - Sum(a - 1) << '\n';
    }
    fin.close();
    fout.close();

    return 0;
}