Cod sursa(job #3163176)

Utilizator calin06calin mihaescu calin06 Data 30 octombrie 2023 19:31:14
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int nmax = 15010;
int n,q,aib[nmax];

void update(int poz,int val)
{
    for(int i = poz;i <= n;i += (i & -i))
        aib[i] += val;
}

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

int main()
{
    fin>>n>>q;
    
    for(int i = 1;i <= n;i++)
    {
        int datorie;
        fin>>datorie;
        update(i,datorie);
    }

    for(int i = 1;i <= q;i++)
    {
        int tip;
        fin>>tip;
        if(tip == 0)
        {
            int val,poz;
            fin>>poz>>val;
            update(poz,-val);
        }
        else
        {
            int st,dr;
            fin>>st>>dr;
            fout<<query(dr) - query(st - 1)<<"\n";
        }
    }
}