Cod sursa(job #3321186)

Utilizator PopescuDariusPopescu Darius-Laurentiu PopescuDarius Data 8 noiembrie 2025 14:43:44
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

// Functie recursiva care calculeaza numarul de maimute prin care trece cererea
int calculeaza_traversare(int i, const vector<int>& K) {
    if (K[i - 1] == 0) {  // Maimuta poate rezolva cererea
        return 0;
    } else {
        return 1 + calculeaza_traversare(K[i - 1], K);  // Cererea merge mai departe la stramos
    }
}

int main() {
    ifstream input("cerere.in");
    ofstream output("cerere.out");

    // Citirea datelor de intrare
    int N;
    input >> N;

    vector<int> K(N);
    for (int i = 0; i < N; ++i) {
        input >> K[i];
    }

    // Rezultatele pentru fiecare maimuta
    vector<int> sol(N);

    // Calculam pentru fiecare maimuta
    for (int i = 0; i < N; ++i) {
        sol[i] = calculeaza_traversare(i + 1, K);  // i + 1 pentru a corecta indexarea
    }

    // Scriem rezultatele in fisierul de iesire
    for (int i = 0; i < N; ++i) {
        output << sol[i] << " ";
    }
    output << endl;

    input.close();
    output.close();

    return 0;
}