Cod sursa(job #2216387)

Utilizator andreistanStan Andrei andreistan Data 26 iunie 2018 15:49:59
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

const int NMAX = 250001;

ifstream f ("stramosi.in");
ofstream g ("stramosi.out");

int N, M;
vector<int> A[NMAX];

void precalc()
{
    int T;
    f >> N >> M;
    for (int i = 1; i <= N; i++)
    {
        f >> T;
        if (T == 0)
            A[i].push_back (0); //A[i][0]
        else
        {
            A[i].push_back (A[T][0] + 1); //A[i][0]
            A[i].push_back (T); //A[i][1]
            for (int j = 2; j <= A[i][0]; j++)
                A[i].push_back (A[T][j - 1]); //A[i][j]
        }
    }
}

int main()
{
    int Q, P;
    precalc();
    while (M--)
    {
        f >> Q >> P;
        if (P > A[Q][0])
            g << "0\n";
        else
            g << A[Q][P] << '\n';
    }
    return 0;
}