Cod sursa(job #2906196)

Utilizator Emma19Tiu Ema Emma19 Data 25 mai 2022 01:00:45
Problema Datorii Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int A[60004],v[15001];
void create(int nod,int l,int r)
{
    if(l==r)
    {
        A[nod] = v[l];
        return;
    }
    create(nod*2,l,(l+r)/2);
    create(nod*2+1,(l+r)/2+1,r);
    A[nod]=A[nod*2]+A[nod*2+1];
}

void modif(int nod,int l ,int r,int i ,int val)
{
    if(i<l||i>r) return;
    if(l==r) {A[nod]-=val;return;}
    modif(nod*2,l,(l+r)/2,i,val);
    modif(nod*2+1,(l+r)/2+1,r,i,val);
    A[nod]=A[nod*2]+A[nod*2+1];
}
int suma(int nod,int l,int r,int i,int j)
{
    if(r<i||l>j)
        return 0;
    if(i<=l&&r<=j) return A[nod];
    return suma(nod*2,l,(l+r)/2,i,j)+suma(nod*2+1,(l+r)/2+1,r,i,j);
}
int main()
{
    int n,m,i,j,l,r,tip,x,y;
    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>v[i];
    create(1,1,n);
    for(i=1;i<=m;i++)
    {
        f>>tip>>x>>y;
        if(tip==0)
        {
            modif(1,1,n,x,y);
        }
        else
        {
          g<<suma(1,1,n,x,y)<<'\n';

        }
    }
f.close();
g.close();
}