Cod sursa(job #2666196)

Utilizator dani.markadonDonescu Daniel-Adrian dani.markadon Data 1 noiembrie 2020 10:25:38
Problema Stramosi Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <vector>
#include <fstream>

class Ancients
{
private:
	struct Pair
	{
		int x, y;
	}*questions;

	int n, m, * anc, * g;

public:

	Ancients()
	{
		ReadFromFile("stramosi.in");
		BuildList();
		AnswerToAllQuestions("stramosi.out");
	}

	void ReadFromFile(const char* fileName)
	{
		std::ifstream in(fileName);

		in >> n >> m;

		anc = new int[n];
		for (int i = 0; i < n; i++)
			in >> anc[i];

		questions = new Pair[m];
		for (int i = 0; i < m; i++)
		{
			int x, y;
			in >> x >> y;
			questions[i].x = x;
			questions[i].y = y;
		}
	}

	void BuildList()
	{
		g = new int[m];

		for (int i = 0; i < m; i++)
			g[i] = anc[i];
	}

	int AnswerToQuestion(int q, int p)
	{
		q--;
		while (p)
		{
			q = anc[q] - 1;
			if (q == -1)
				break;
			p--;
		}
		if (p)
			q = 0;
		else
			q++;

		return q;
	}

	void AnswerToAllQuestions(const char* fileName)
	{
		std::ofstream out(fileName);

		for (int i = 0; i < m; i++)
		{
			int ans = AnswerToQuestion(questions[i].x, questions[i].y);
			out << ans << std::endl;
		}
	}
};

int main()
{
	new Ancients();
}