Cod sursa(job #2790937)

Utilizator CelestinNegraru Celestin Celestin Data 29 octombrie 2021 20:11:33
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#define maxi 15005
#define putere(x) ((x^(x-1))&x)
using namespace std;
ifstream f;
ofstream g;
int aib[maxi],n,m,x,op,a,b;
void UPDATE(int x,int val)
{
    for(int i=x;i<=n;i+=putere(i))
        aib[i]+=val;
    return;
}
int SUM(int x)
{
    int suma=0;
    for(int i=x;i>0;i-=putere(i))
        suma+=aib[i];
    return suma;
}
void SOLVE()
{
    f.open("datorii.in",ios::in);
    g.open("datorii.out",ios::out);
    f>>n>>m;
    for(int i=1;i<=n;i++)
    {f>>x;
     UPDATE(i,x);
    }
    for(int i=1;i<=m;i++)
    {
        f>>op>>a>>b;
        if(op==0)
            UPDATE(a,-b);
        else g<<SUM(b)-SUM(a-1)<<'\n';
    }
    f.close();
    g.close();
    return;
}
int main()
{
    SOLVE();
    return 0;
}