Cod sursa(job #2036110)

Utilizator giotoPopescu Ioan gioto Data 10 octombrie 2017 12:22:43
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;

int n, m, a[15005];
int A[15005];
inline void update(int i, int x){
    for(int j = i; j <= n ; j = j + (j & (-j)))
        A[j] += x;
}
inline int query(int i){
    int ans = 0;
    for(int j = i; j != 0; j = j - (j & (-j)))
        ans = ans + A[j];
    return ans;
}
int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n ; ++i)
        scanf("%d", &a[i]), update(i, a[i]);
    int x, y, ok;
    for(int i = 1; i <= m ; ++i){
        scanf("%d%d%d", &ok, &x, &y);
        if(ok == 0) update(x, -y);
        else printf("%d\n", query(y) - query(x - 1));
    }
    return 0;
}