Cod sursa(job #2930249)

Utilizator sims_glAlexandru Simion sims_gl Data 27 octombrie 2022 20:36:45
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<iostream>
using namespace std;
int i,n,m,v[15005], aib[15005], p, x, p1, p2, c;
void add(int pos, int val){


    while(pos<=n)
    {
        aib[pos]+=val;
        pos+=pos&(-pos);
    }
}
int sum(int pos)
{
    int s= 0;
    while(pos>0)
    {
        s+=aib[pos];
        pos-=pos&(-pos);
    }
    return s;
}
int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    scanf("%d%d", &n, &m);

    for(p = 1; p < n; p = p << 1);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d", &v[i]);
        add(i, v[i]);
    }
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d", &c, &p1, &p2);
        if(c==0)
        {
            add(p1, -p2);
        }
        else {
            printf("%d\n",sum(p2)- sum(p1-1));
        }
    }
}