Cod sursa(job #2160304)

Utilizator MoleRatFuia Mihai MoleRat Data 11 martie 2018 12:27:31
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int A[32000];
int n,m;
int x,y,z;
int Get_Urm(int x)
{
    return x + (x & -x);
}
int Get_Par(int x)
{
    return x - (x & -x);
}
void update(int val,int poz)
{
    while (poz<=n)
    {
        A[poz]+=val;
        poz=Get_Urm(poz);
    }
}
int get_Sum(int poz)
{
    poz++;
    int sum=0;
    while (poz>0)
    {
        sum+=A[poz];
        poz=Get_Par(poz);
    }
    return sum;
}
int main()
{
    fin>>n>>m;
    for (int i=1; i<=n; i++)
    {
        int k;
        fin>>k;
        update(k,i);
    }
    for (int i=1;i<=m;i++)
    {
        fin>>x>>y>>z;
        if (x==0)
        {
            update(-z,y);
        }
        else
        {
            fout<<get_Sum(z)-get_Sum(y-2)<<'\n';
        }
    }
    return 0;
}