Cod sursa(job #1251477)

Utilizator angelaAngela Visuian angela Data 29 octombrie 2014 16:27:04
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
using namespace std;
 
int n, m, ind;
int op;
long aib[15002];
int  a, val, p, q;
 
void Update(int poz, int q) 
{
    for (int i = poz; i <= n; i += i & -i) 
        aib[i] += q;
}
 
long Sum(int poz) 
{
    long sum = 0;
    for (int i = poz; i > 0; i -= i & -i) 
        sum += aib[i];
    return sum;
}
 
int main() 
{ 
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);

    scanf("%d %d", &n, &m);
 
    for (int j = 1; j <= n; j++) 
    {
        scanf("%d", &a);
        Update(j, a);
    }
 
    for (int j = 1; j <= m; j++) 
    {
        scanf("%d", &op);
 
        if (op == 0)
        {
			scanf("%d%d", &ind, &val);
            Update(ind, -val);
		}
        else 
        {
			scanf("%d%d", &p, &q);
            printf("%ld\n", Sum(q) - Sum(p - 1));
		}
    }
 
    return 0;
}