Cod sursa(job #3211377)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 9 martie 2024 10:55:03
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin ("datorii.in");
ofstream fout ("datorii.out");

int v[100005];
int aib[100005];
int n;

int query (int v)
{
    int sum=0;
    for (int i=v; i>=0; i-=(i&(-i))) {
        if (i==0) break;
        sum+=aib[i];
    }
    return sum;
}

void update(int p, int v)
{
    //cout<<p<<endl;
    for (int i=p; i<=n; i+=(i&(-i))) {
        //cout<<i<<' '<<v<<endl;
        aib[i]+=v;
    }
    //cout<<endl<<endl;
}

int suma (int a, int b)
{
    int sum2=query(b), sum1=query(a-1);
    return sum2-sum1;
}
int main()
{
    int m, a, b, c;
    fin>>n>>m;
    for (int i=1; i<=n; i++) {
        fin>>v[i];
        update(i, v[i]);
    }
    for (int i=1; i<=m; i++) {
        fin>>c;
        if (c==0) {
            fin>>a>>b;
            update(a, -b);
        }
        if (c==1) {
            fin>>a>>b;
            fout<<suma(a, b)<<'\n';
        }
    }
    return 0;
}