Pagini recente » Cod sursa (job #1174257) | Istoria paginii runda/moisil_round_2 | Cod sursa (job #1372959) | Cod sursa (job #2805860) | Cod sursa (job #2666196)
#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();
}