Cod sursa(job #2193216)

Utilizator Rodik_RodyRodica Vasilescu Rodik_Rody Data 9 aprilie 2018 13:11:45
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
using namespace std;

int n, m, AIB[15001];
void Add(int poz, int quantity)
{
    for(; poz<=n; poz+=poz&-poz)
        AIB[poz] += quantity;
}
int Compute(int poz)
{
    int sum = 0;
    for(; poz>0; poz-=poz&-poz)
        sum += AIB[poz];
    return sum;
}
int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    scanf("%d %d", &n, &m);
    for( int i = 1; i <= n; i++)
    {
        int x;
        scanf("%d", &x);
        Add(i,x);
    }
    while( m-- )
    {
        int q, x, y;
        scanf("%d%d%d", &q, &x, &y);
        if(q)
            printf("%d\n",Compute(y) - Compute(x-1));
        else
            Add(x, -y);
    }
    return 0;
}