Cod sursa(job #2662339)

Utilizator metallidethantralayerIon Cojocaru metallidethantralayer Data 23 octombrie 2020 21:45:06
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,AIB[15005];
void Update(int x1,int x)
{
    for(int i=x1;i<=n;i+=i^(i-1)&i)
        AIB[i]+=x;
}
int Query(int x)
{
    int rez=0;
    for(int i=x;i;i-=i^(i-1)&i)
        rez+=AIB[i];
    return rez;
}
int main()
{
    int x;
    f>>n>>m;
    for(int i=1;i<=n;i++)
        f>>x,Update(i,x);
    while(m--)
    {
        int cer,a,b;
        f>>cer>>a>>b;
        assert(cer==1||cer==0);
        if(cer)
            g<<Query(b)-Query(a-1)<<'\n';
        else Update(a,-b);
    }

    return 0;

}