Cod sursa(job #3231612)

Utilizator alexionut05Alexandru-Ionut Tincu alexionut05 Data 27 mai 2024 12:55:26
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdint>
#include <cstdio>

#define SIZE 250001

int main()
{
	FILE *fin = fopen("stramosi.in", "r");
	FILE *fout = fopen("stramosi.out", "w");

	int32_t members, queries;
	fscanf(fin, "%d%d", &members, queries);

	int32_t tree_depth = 0;

	int32_t ancestors[SIZE];
	for (int32_t i = 1; i <= members; ++i) {
		fscanf(fin, "%d", &ancestors[i]);
		tree_depth += (ancestors[i] == i - 1);
	}

	if (tree_depth == members) {
		while (queries--) {
			int32_t x, y;
			fscanf(fout, "%d%d", &x, &y);
			fprintf(fout, "%d\n", x >= y ? x - y : 0);
		}
	}

	else {
		while (queries--) {
			int32_t x, y;
			fscanf(fin, "%d%d", &x, &y);

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

			fprintf(fout, "%d\n", x);
		}
	}

	return 0;
}