Cod sursa(job #3248899)

Utilizator tonealexandruTone Alexandru tonealexandru Data 13 octombrie 2024 18:12:23
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

int lsb(int x)
{
    int y = (x & -x);
    return y;
}

int aib[100005], n;

void add(int poz, int val)
{
    for(int i=poz; i<=n; i+=lsb(i))
        aib[i] += val;
}

int sum(int poz)
{
    int suma = 0;
    for(int i=poz; i>0; i-=lsb(i))
        suma += aib[i];
    return suma;
}

int main()
{
    ifstream cin("datorii.in");
    ofstream cout("datorii.out");
    int q, cer, a, b;
    cin>>n>>q;

    for(int i=1;i<=n;i++)
    {
        cin>>a;
        add(i, a);
    }

    for(int i=0;i<q;i++)
    {
        cin>>cer>>a>>b;
        if(cer == 0)
            add(a, b * (-1));
        else if(cer == 1)
            cout<<sum(b) - sum(a-1)<<'\n';
    }



    return 0;
}