Cod sursa(job #2386567)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 23 martie 2019 11:17:26
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

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

int n, m;
int tre[32041];

int nxt(int a)
{
    return a & -a;
}

int read(int a)
{
    int s = 0;
    for(int i = a; i > 0; i -= nxt(i)){
        s += tre[i];
    }
    return s;
}

void add(int a, int v)
{
    for(int i = a; i <= n; i += nxt(i)){
        tre[i] += v;
    }
}

int main()
{
    fin >> n >> m;
    for(int i = 1; i <= n; i++){
        int a;
        fin >> a;
        add(i, a);
    }
    for(int i = 0; i < m; i++){
        int op, a, b;
        fin >> op >> a >> b;
        if(op == 0){
            add(a, -b);
        }else{
            fout << read(b) - read(a-1) << "\n";
        }
    }
    return 0;
}