Cod sursa(job #3231631)

Utilizator alexionut05Alexandru-Ionut Tincu alexionut05 Data 27 mai 2024 13:53:45
Problema Stramosi Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <array>

#define SIZE 250001
std::array<int32_t, SIZE> ancestors;

int main()
{
	std::ifstream fin("stramosi.in");
	std::ofstream fout("stramosi.out");

	int32_t members, queries;
	fin >> members >> queries;

	int32_t tree_depth = 0;

	for (int32_t i = 1; i <= members; ++i) {
		fin >> ancestors[i];
		tree_depth += (ancestors[i] == i - 1);
	}

	if (tree_depth == members) {
		while (queries--) {
			int32_t x, y;
			fin >> x >> y;
			fout << ((x >= y) ? (x - y) : 0) << '\n';
		}
	}

	else {
		while (queries--) {
			int32_t x, y;
			fin >> x >> y;

			while (y-- && x) {
				x = ancestors[x];
			}

			fout << x << '\n';
		}
	}

	return 0;
}