Cod sursa(job #1509105)

Utilizator kiunyAndrei Gavrila kiuny Data 23 octombrie 2015 15:12:53
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
typedef long long ll;

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

int n, m;
vector <ll> aib;
int t;

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

ll query(int r)
{
    int ans = 0;
    for(; r > 0; r -= r&(-r)) ans+=aib[r];
    return ans;
}


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

    aib.resize(n+1, 0);
    for(int i = 0; i < n; i++)
    {
        fin >> t;
        update(i+1, t);
    }
    int q, a, b;
    for(int i = 0; i < m; i++)
    {

        fin >> q >> a >> b;
        if(q == 0)
        {
            update(a, -b);
        }
        else
        {
            fout << query(b) - query(a-1) << "\n";
        }
    }
    return 0;
}