Cod sursa(job #3241848)

Utilizator Cristian_NegoitaCristian Negoita Cristian_Negoita Data 5 septembrie 2024 11:49:16
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;

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

#define lsb(i) (i & (-i))

const int DIM = 15001;
int n, aib[DIM] = { 0 };

void add(int val, int poz)
{
    for(int i = poz; i <= n; i += lsb(i))
        aib[i] += val;
}

int sum(int poz)
{
    int s = 0;
    for(int i = poz; i >= 1; i -= lsb(i))
        s += aib[i];
    return s;
}

int main()
{
    int m;
    fin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        int nr;
        fin >> nr;
        add(nr, i);
    }

    while(m--)
    {
        int t, a, b;
        fin >> t >> a >> b;

        if(t == 0)
            add(-b, a);
        else
            fout << sum(b) - sum(a - 1) << "\n";
    }

    return 0;
}