Cod sursa(job #2392139)

Utilizator ApolodorTudor Fernea Apolodor Data 29 martie 2019 18:35:49
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fi("datorii.in");
ofstream fo("datorii.out");

int n,m;
int a[15001],aib[15001];

void update(int i, int x)
{
    if(i<=n)
    {
        aib[i]+=x;
        int y=i&(-i);
        update(i+y,x);
    }
}

long long query(int i)
{
    if(i>=1)
    {
        long long ans=0;
        int y=i&(-i);

        ans+=aib[i];

        ans+=query(i-y);

        return ans;
    }
    return 0;
}

int main()
{

    fi>>n>>m;

    for(int i=1; i<=n; i++)
        fi>>a[i];

    for(int i=1; i<=n; i++)
        update(i,a[i]);

    for(int i=1; i<=m; i++)
    {
        int x;
        int v1,v2;

        fi>>x;
        fi>>v1>>v2;

        if(x==0)
            update(v1,-v2);
        else
            fo<<query(v2)-query(v1-1)<<'\n';

    }
}