Cod sursa(job #1600464)

Utilizator BugirosRobert Bugiros Data 15 februarie 2016 08:11:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;

const int MAXN = 15005;

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

int n;
int aib[MAXN];

void adauga(int nr, int poz)
{
    while(poz <= n)
    {
        aib[poz] += nr;
        poz += poz & (-poz);
    }
}

int suma(int poz)
{
    int rez = 0;
    while(poz > 0)
    {
        rez += aib[poz];
        poz -= poz & (-poz);
    }
    return rez;
}

int main()
{
    int m;
    in >> n >> m;
    int nr;
    for (int i = 1;i <= n;++i)
    {
        in >> nr;
        adauga(nr,i);
    }
    int t,a,b;
    for (int i = 1;i <= m;++i)
    {
        in >> t >> a >> b;
        if (t == 0)
            adauga(-b, a);
        if (t == 1)
            out << suma(b) - suma(a - 1) << '\n';
    }
    return 0;
}