Pagini recente » Cod sursa (job #2494569) | Cod sursa (job #2519062) | Cod sursa (job #422877) | Cod sursa (job #2422424) | Cod sursa (job #2666210)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
#include <tuple>
class Ancients
{
private:
std::queue<std::tuple<int, int>> question;
std::vector<int> anc, g;
int n, m;
public:
Ancients()
{
ReadFromFile("stramosi.in");
BuildList();
AnswerToAllQuestions("stramosi.out");
}
void ReadFromFile(const char* fileName)
{
std::ifstream in(fileName);
in >> n >> m;
for (int i = 0; i < n; i++)
{
int a;
in >> a;
anc.push_back(a);
}
for (int i = 0; i < m; i++)
{
int x, y;
in >> x >> y;
question.push(std::make_pair(x, y));
}
}
void BuildList()
{
for (int i = 0; i < m; i++)
g.push_back(anc[i]);
}
int AnswerToQuestion(int q, int p)
{
if (!p)
return q;
q--;
while (p > 0)
{
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);
while (question.size() > 0)
{
out << AnswerToQuestion(std::get<0>(question.front()), std::get<1>(question.front())) << std::endl;
question.pop();
}
}
};
int main()
{
new Ancients();
}