Cod sursa(job #2262296)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 17 octombrie 2018 10:13:57
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;

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

int N, M;
int aib[15005];

inline int LastBit(int x)
{
    return x & (-x);
}

void Update(int pos, int value)
{
    for(int i = pos; i <= N; i += LastBit(i))
        aib[i] += value;
}

int Query(int pos)
{
    int answer = 0;

    for(int i = pos; i > 0; i -= LastBit(i))
        answer += aib[i];

    return answer;
}

int main()
{
    int t, x, y;

    fin >> N >> M;

    for(int i = 1; i <= N; i++)
    {
        fin >> x;
        Update(i, x);
    }

    for(int i = 1; i <= M; i++)
    {
        fin >> t >> x >> y;

        if(t == 0)
            Update(x, -y);
        else
            fout << Query(y) - Query(x - 1) << '\n';
    }

    return 0;
}