Cod sursa(job #2900561)

Utilizator alexddAlexandru Dima alexdd Data 11 mai 2022 10:24:45
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
#define zeros(x) ((x^(x-1))&x)
int v[15001];
int aib[15001];
int n;
void update(int cantitate, int poz)
{
    for(int i=poz;i<=n;i+=zeros(i))
        aib[i]-=cantitate;
}
int query(int poz)
{
    int rez=0;
    for(int i=poz;i>0;i-=zeros(i))
        rez+=aib[i];
    return rez;
}
int main()
{
    int m;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        update((-1)*v[i],i);
    }
    int cod,a,b;
    for(int i=1;i<=m;i++)
    {
        fin>>cod>>a>>b;
        if(cod==0)
        {
            update(b,a);
        }
        else
        {
            fout<<query(b)-query(a-1)<<"\n";
        }
    }
}