Cod sursa(job #2578001)

Utilizator sipdavSipos David Oliver sipdav Data 10 martie 2020 12:05:58
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

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

const int dim = 15010;

int n, m, v[dim];

int nr(int x)
{
    return (x & (-x));
}

int suma(int x)
{
    int s = 0;
    while(x > 0)
    {
        s += v[x];
        x -= nr(x);
    }
    return s;
}

void baga(int i, int x)
{
    while(i <= n)
    {
        v[i] += x;
        i += nr(i);
    }
}

void scade(int i, int x)
{
    while(i <= n)
    {
        v[i] -= x;
        i += nr(i);
    }
}

int main()
{
    in>>n>>m;
    int o, x, y;
    for(int i = 1;i <= n;i++)
    {
        in>>x;
        baga(i, x);
    }
    for(int i = 1;i <= m;i++)
    {
        in>>o>>x>>y;
        if(o == 0)
            scade(x, y);
        else
            out<<suma(y) - suma(x - 1)<<'\n';
    }
    return 0;
}