Cod sursa(job #2615742)

Utilizator Razvank206Dumitriu Razvan Razvank206 Data 15 mai 2020 13:30:18
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb

#include <iostream>
#include <fstream>
#define N 15001
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");

int a[N],v[N],n, m, first, last, index, val, sum, op, m1, m2, i;

void operatieA(int x, int s, int d)
{
    a[x] += v[i];
    if (s == d)
    {

        return;
    }

    int mijl = (s + d)/2;
    if (index <= mijl)
        operatieA(2*x, s, mijl);
    if (index > mijl)
        operatieA(2*x+1, mijl+1, d);


}

void operatieB(int x, int s, int d)
{
    if (m1 <= s && d <= m2)
    {
        sum += a[x];
        return;
    }

    int mijl = (s + d)/2;
    if (m1 <= mijl)
        operatieB(2*x, s, mijl);
    if (m2 > mijl)
        operatieB(2*x + 1, mijl+1, d);
}


int main ()
{
    f >> n >> m;
    for(i = 1; i <= n; i++)
    {
        f >> v[i];
        index = i;
        operatieA(1, 1, n);
    }

    for(i=1; i<=m; i++)
    {
        f >> op >> m1 >> m2;
        if (op == 0)
        {
            index = m1;
            v[i] = -m2;
            operatieA(1, 1, n);
        }
        else
        {
            sum = 0;
            operatieB(1, 1, n);
            g << sum << '\n';
        }
    }

    return 0;
}