Cod sursa(job #855754)

Utilizator mvcl3Marian Iacob mvcl3 Data 15 ianuarie 2013 16:17:51
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
using namespace std;

ifstream f("datorii.in"); ofstream g("datorii.out");

const int NMAX = 15001;
int n, m, c[NMAX];

inline void update(int, int);
inline int query(int);
inline int LSB(int q)
{
    return q & (-q);
}

int main()
{
    f>>n>>m;
    int x, y, t;

    for(int i = 1; i <= n; ++i)
    {
        f>>x;
        for(int j = i; j <= n; j += LSB(j)) c[j] += x;
    }

    for(; m; --m)
    {
        f>>t;
        if(!t)
        {
            f>>x>>y;
            update(x, y);
        }
        else
        {
            f>>x>>y;
            g<<query(max(x, y)) - query(min(x, y)- 1)<<'\n';
        }
    }

}

inline void update(int poz, int k)
{
    for(; poz <= n; poz += LSB(poz)) c[poz] -= k;
}

inline int query(int poz)
{
    int sum = 0;
    for(; poz > 0; poz -= LSB(poz)) sum += c[poz];

    return sum;
}