Cod sursa(job #1798088)

Utilizator Rocamadour1497Alexandru Martiniuc Rocamadour1497 Data 4 noiembrie 2016 21:11:01
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <cstdio>
using namespace std;
int aib[15001],n,m;
void update(int i,int x)
{
    for( ; i<=n ; i+=i&(-1) )
        aib[i] += x;
}
int query(int x)
{
    int sum=0;
    for( ; x ; x -= x&(-x) )
        sum+=aib[x];
    return sum;
}
int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    scanf("%d %d\n", &n, &m);
    for(int i=1;i<=n;i++)
    {
        int p;
        scanf("%d ", &p);
        update(i, p);
    }

    for( ; m ; m--)
    {
        int y,z;
        int x;
         scanf("%d %d %d\n", &x, &y, &z);
        if(x==1)
        printf("%d\n", query(z)-query(y-1));
        else
        update(y,-z);

    }
    return 0;
}