Cod sursa(job #2056972)

Utilizator alextodoranTodoran Alexandru Raul alextodoran Data 4 noiembrie 2017 14:00:43
Problema Arbori indexati binar Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, m, v[100002], q, a, b, l, r, mid, sp[100002], i, j;

int main()
{
    ifstream fin ("aib.in");
    ofstream fout ("aib.out");
    fin >> n >> m;
    for(i = 1; i <= n; i++)
    {
        fin >> v[i];
        sp[i] = sp[i - 1] + v[i];
    }
    for(i = 1; i <= m; i++)
    {
        fin >> q;
        if(q == 0)
        {
            fin >> a >> b;
            v[a] += b;
            for(j = a; j <= n; j++)
                sp[j] += b;
        }
        else if(q == 1)
        {
            fin >> a >> b;
            fout << sp[b] - sp[a - 1] << "\n";
        }
        else if(q == 2)
        {
            fin >> a;
            l = 1;
            r = n;
            while(l < r)
            {
                mid = (l + r) / 2;
                if(sp[mid] < a)
                    l = mid + 1;
                else
                    r = mid;
            }
            if(sp[l] == a)
                fout << l << "\n";
            else
                fout << "-1\n";
        }
    }
    return 0;
}