Cod sursa(job #3333673)

Utilizator parus_majorParus Major parus_major Data 14 ianuarie 2026 20:25:58
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

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

#define MAXN 15002
//#define zeros(x) ( (x ^ (x - 1)) & x)
#define zeros(x) (x & (-x))

int N, M, x;
int A[MAXN];

void add(int x, int val) {
    for (; x <= N; x += zeros(x)) A[x] += val;
}

int total(int x) {
    int ans = 0;
    for (; x > 0; x -= zeros(x)) ans += A[x];
    return ans;
}

int main()
{
    fin >> N >> M;
    for (int i = 0; i < N; ++i) {
        fin >> x;
        add(i + 1, x);
    }
    for (int i = 0; i < M; ++i) {
        int tip, x, y;
        fin >> tip >> x >> y;
        if (tip == 0) {
            add(x, -y);
        }
        else {
            fout << total(y) - total(x - 1) << "\n";
        }
    }
    return 0;
}