Cod sursa(job #2738123)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 5 aprilie 2021 14:44:22
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda soft-contest Marime 0.82 kb
#include <bits/stdc++.h>
#define op(x) (x^(x-1))&x

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int n,m;
int aib[15005];

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

int querry(int poz)
{
    int suma=0;

    for(int i=poz; i>=1; i-=op(i))
    {
        suma+=aib[i];
    }

    return suma;
}

int main()
{
    f>>n>>m;

    for(int i=1; i<=n; i++)
    {
        int x;
        f>>x;
        adauga(x,i);
    }

    for(int i=1; i<=m; i++)
    {
        int cerinta,x,y;

        cin>>cerinta>>x>>y;

        if(cerinta==0)
        {
            adauga(-y,x);
            continue;
        }
        if(cerinta==1)
        {
            g<<querry(y)-querry(x-1)<<'\n';
        }
    }
}