Cod sursa(job #1447738)

Utilizator mihai9913Blaga Mihai mihai9913 Data 5 iunie 2015 09:13:50
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");ofstream g("datorii.out");
int n, m, x, pos, tip, a, b, aib[15002];
int zeros(int x)
{
    return ((x^(x-1))&x);
}
void update(int pos, int val)
{  for(;pos<=n;pos+=zeros(pos))
       aib[pos] += val;

}
int query(int pos )
{   int sum = 0;
        for(; pos!=0;pos-=zeros(pos))
            sum += aib[pos];
    return sum;
}
int main()
{ f>>n>>m;
    for (int i=1;i<=n;i++) {f>>a; update(i, a); }
    for (int i=1;i<=m;i++) {
        f>>tip>>a>>b;
        if (tip==0) update(a, -b);
        else g << query(b) - query(a - 1) << '\n';
    }

    return 0;
}