Cod sursa(job #2544014)

Utilizator dimi999Dimitriu Andrei dimi999 Data 11 februarie 2020 18:21:30
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

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

int n, m;

struct Aib
{
    int v[15005];

    void update(int add, int poz)
    {
        for(int i = poz; i <= n; i += i&(-i))
            v[i] += add;
    }

    int query(int poz)
    {
        int sum = 0;

        for(int i = poz; i >= 1; i -= i&(-i))
            sum += v[i];

        return sum;
    }
}aib;

int main()
{
    fin >> n >> m;

    for(int i = 1; i <= n; i++)
    {
        int x;

        fin >> x;

        aib.update(x,i);
    }

    for(int i = 1; i <= m; i++)
    {
        int x, y, z;

        fin >> x >> y >> z;

        if(x == 0)
            aib.update(-z,y);
        else
            fout << aib.query(z) - aib.query(y-1) << '\n';
    }
    return 0;
}