Cod sursa(job #1899642)

Utilizator medicinedoctoralexandru medicinedoctor Data 2 martie 2017 20:55:28
Problema Arbori indexati binar Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <stdio.h>
#include <vector>

using namespace std;

int main()
{
    FILE *fin, *fout;
    fin = fopen("aib.in","r");
    fout = fopen("aib.out","w");
    int n, m, q, x, y;
    vector <int> a;
    fscanf(fin, "%d %d", &n, &m);
    a.resize(n);

    for (int i = 0; i < a.size(); i++)
        fscanf(fin, "%d ", &a[i]);

    for (int i = 0; i < m; i++)
    {
        fscanf(fin, "%d %d", &q, &x);
        if (q != 2) fscanf(fin, "%d ", &y);
        if (q == 0) a[--x] += y;
        if (q == 1)
        {
            int s = 0;
            for (int i = x - 1; i < y; i++) s += a[i];
            fprintf(fout, "%d\n", s);
        }
        if (q == 2)
        {
            int s = 0, i;
            for (i = 0; s < x; i++)
                s += a[i];
            if (s == x) fprintf(fout, "%d\n", i);
                else fprintf(fout, "-1\n");
        }
    }
}