Cod sursa(job #1793510)

Utilizator buzandanBuzan Dan Alexandru buzandan Data 31 octombrie 2016 09:22:37
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

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

int n, m, x, y, op;
int a[15001];
void Update(int poz, int v);
void Update1(int poz, int v);
int Query(int x);

int main()
{
    fin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        fin >> x;
        Update1(i,x);

    }

   // fout << Query(4) << '\n';
    for(int i = 1; i <= m; i++)
    {
        fin >> op >> x >> y;
        if(op == 0)
            Update(x,y);
        else
            fout << Query(y) - Query(x - 1) << '\n';
    }
}
void Update(int poz, int v)
{
    for(int i = poz; i <= n; i+= i & -i)
        a[i] -= v;

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

}
int Query(int x)
{
    int s = 0;
    for(int i = x; i; i -= i & -i)
        s += a[i];
    return s;
}