Cod sursa(job #2190485)

Utilizator cc4infinityCojocaru Catalin cc4infinity Data 30 martie 2018 23:06:02
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;
int n,m,t[250000],i,j,sum,M,val,a,b,c,poz;

void update(int nod, int x, int y)
{
    if (x==y) {t[nod]+=val; return;}
    int mid=(x+y)/2;
    if (mid<poz) update(nod*2+1,mid+1,y);
            else update(nod*2,x,mid);
    t[nod]=t[nod*2]+t[nod*2+1];
}

void suma(int nod, int x, int y)
{
    if (x>=a && y<=b) {sum+=t[nod]; return;}
    int mid=(x+y)/2;
    if (mid<b) suma(nod*2+1,mid+1,y);
    if (mid>=a) suma(nod*2,x,mid);
}

int main()
{
    ifstream fin("datorii.in");
    ofstream fout("datorii.out");
    fin>>n>>m;
    for (i=1;i<=n;i++)
    {
        poz=i;
        fin>>val;
        update(1,1,n);
    }
    for (i=1;i<=m;i++)
    {
        fin>>c>>a>>b;
        if (c==0)
        {
            poz=a;
            val=-b;
            update(1,1,n);
        } else
        {
            sum=0;
            suma(1,1,n);
            fout<<sum<<"\n";
        }
    }
    return 0;
}