Cod sursa(job #2615739)

Utilizator Razvank206Dumitriu Razvan Razvank206 Data 15 mai 2020 13:24:46
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#define N 15001
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");

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


void operatieA(int x, int s, int d)
{

    if (s == d)
    {
        a[x] += val;
        return;
    }

    int mijl = (s + d)/2;

    if (i <= mijl)
        operatieA(2*x, s, mijl);
    else
        operatieA(2*x+1, mijl+1, d);

    a[x] = a[x*2] + a[x*2+1];
}

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 >> val;
        operatieA(1, 1, n);
    }

    for(int j=1; j<=m; j++)
    {
        f >> op >> m1 >> m2;

        if (op == 0)
        {
            i = m1;
            val = -m2;
            operatieA(1, 1, n);
        }

        if(op == 1)
        {
            sum = 0;
            operatieB(1, 1, n);
            g << sum << '\n';
        }
    }

    return 0;
}