Cod sursa(job #3231638)

Utilizator alexionut05Alexandru-Ionut Tincu alexionut05 Data 27 mai 2024 14:38:07
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdint>
#include <fstream>

#define SIZE 250001

int main()
{
	freopen("stramosi.in", "r", stdin);
	setvbuf(stdout, NULL, _IONBF, 0);
	freopen("stramosi.out", "w", stdout);
	setvbuf(stderr, NULL, _IONBF, 0);

	int32_t members, queries;
	scanf("%d %d", &members, &queries);

	int32_t tree_depth = 0;

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

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

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

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

			printf("%d\n", x);
		}
	}

	return 0;
}