Cod sursa(job #1425542)

Utilizator justaddcodeJustadd Code justaddcode Data 27 aprilie 2015 17:12:31
Problema Datorii Scor 100
Compilator cpp Status done
Runda pregatire-lot-aib Marime 0.94 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#define zeros(x) ( (x ^ (x - 1)) & x )
#define Nmax 15004
using namespace std;
int n, m, i, j, nr, val;
int aib[Nmax];
int sum(int x)
{
    int suma = 0, i;
    for (i = x;i >= 1; i -= zeros(i) )
    suma += aib[i];
    return suma;
}
void add(int x, int y)
{
     int i;
     for (i = x; i <= n; i += zeros(i) )
     aib[i] += y;
}
void Achit()
{
    int a, b;
    scanf("%d %d", &a, &b);
    add(a, - b);
}
void Inter()
{
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", sum(b) - sum(a - 1));
}
int main()
{
    int q = 0;
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    scanf("%d %d", &n , &m);
    for (i = 1; i <= n; ++i)
    {
        scanf("%d", &val);
        add(i, val);
    }
    while (m--)
    {
        scanf("%d", &q);
        if (q == 0)
        Achit();
        else Inter();
    }

}