Cod sursa(job #2303268)

Utilizator DariusDCDarius Capolna DariusDC Data 15 decembrie 2018 22:17:47
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#define NMAX 15001

using namespace std;

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

int n, m;
int x, aib[NMAX];

void adauga(int x,int valoare)
{
    int i;
    for (int i = x ;i <= n;i += i & (-i))
        aib[i] += valoare;
}

int suma(int x)
{
    int s = 0;
    int i;
    for (int i = x; i >= 1 ; i -= i & (-i))
        s += aib[i];
    return s;
}

int main()
{
    fin >> n >> m;
    for (int i = 1; i <= n;i++)
        {
            fin >> x;
            adauga(i,x);
        }
    for (int i = 1; i <= m;i++)
    {
        int c, x, y;
        fin >> c >> x >> y;
        if (c == 0)
        {
            adauga(x,-y);
        }
        else if (c == 1)
        {
            fout << suma(y) - suma(x-1) << " ";
        }
    }
    return 0;
}