Cod sursa(job #2222578)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 17 iulie 2018 13:26:25
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int NMAX = 15005;
int fn[NMAX],n;

void add(int val, int k)
{
    while (k<=n)
    {
        fn[k]+=val;
        k += k&-k;
    }
}
int sum(int k)
{
    int s = 0;
    while (k>0)
    {
        s+=fn[k];
        k -= k&-k;
    }
    return s;
}

int main()
{
    int m;
    in >> n >> m;
    for (int i = 1; i<=n; i++)
    {
        int x;
        in >> x;
        add(x,i);
    }
    for (int i = 1; i<=m; i++)
    {
        int t;
        in >> t;
        if (t == 0)
        {
            int k,val;
            in >> k >> val;
            add(-val,k);
        }
        else if (t == 1)
        {
            int st,dr;
            in >> st >> dr;
            out << sum(dr)-sum(st-1) << "\n";
        }
    }
}