Cod sursa(job #2782557)

Utilizator VladNANegoita Vlad-Andrei VladNA Data 12 octombrie 2021 18:20:32
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#define NMAX 15005

using namespace std;

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

int n,m;
int v[NMAX];

inline int pas (int nr)
{
    return (nr ^ (nr-1) ) & nr;
}

void modifica(int poz, int val)
{
    for(int i=poz;i<=n;i+=pas(i))
        v[i]-=val;
}

int calc(int poz)
{
    int sum=0;
    for(int i=poz;i>=1;i-=pas(i))
        sum+=v[i];
    return sum;
}

int main()
{
    in>>n>>m;
    for(int i=1,x;i<=n;i++)
    {
        in>>x;
        modifica(i,-x);
    }
    for(int i=1,cer,a,b;i<=m;i++)
    {
        in>>cer>>a>>b;
        if(cer==0)
            modifica(a,b);
        else
            out<<calc(b)-calc(a-1)<<'\n';
    }
    return 0;
}