Cod sursa(job #2776463)

Utilizator pctirziuTirziu Petre pctirziu Data 19 septembrie 2021 21:20:43
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int aib[15005];
int n;
void update(int x, int val)
{
    int i;
    for(i = x; i <= n; i += (i & -i))
        aib[i] += val;
}
int solve(int x)
{
    int i, sum = 0;
    for(i = x; i >= 1; i -= (i & -i))
        sum += aib[i];
    return sum;
}
int query(int l, int r)
{
    return solve(r) - solve(l - 1);
}
int main()
{
    int i, j, m, tip, x, y;
    cin >> n >> m;
    for(i = 1; i <= n; i++){
        cin >> x;
        update(i, x);
    }
    for(j = 1; j <= m; j++){
        cin >> tip >> x >> y;
        if(tip == 1)
            cout << query(x, y) << "\n";
        else
            update(x, -y);
    }
    return 0;
}