Pagini recente » Cod sursa (job #1408472) | Cod sursa (job #1333430) | Cod sursa (job #2314190) | Cod sursa (job #2949526) | Cod sursa (job #1727575)
#include <iostream>
#include <fstream>
using namespace std;
#define NMAX 250000
#define MMAX 300000
//#define _DEBUG
int N, M, PMax = 1;
int Q[MMAX];
int P[MMAX];
int R[MMAX];
int parinti[NMAX+1];
int stramosi[NMAX+1];
int main(int argc, const char * argv[]) {
fstream fin("stramosi.in", fstream::in);
fin >> N >> M;
for (int i = 1; i <= N; i++) {
fin >> parinti[i];
stramosi[i] = parinti[i];
}
for (int i = 0; i < M; i++) {
fin >> Q[i] >> P[i];
if (P[i] > PMax)
PMax = P[i];
else if (P[i] == 1)
R[i] = parinti[Q[i]];
}
fin.close();
for (int pas = 2; pas <= PMax; pas++) {
for (int i = 1; i <= N; i++) {
if (stramosi[i] != 0)
stramosi[i] = parinti[stramosi[i]];
}
for (int i = 0; i < M; i++)
if (P[i] == pas)
R[i] = stramosi[Q[i]];
}
#ifdef _DEBUG
for (int i = 0; i < M; i++)
cout << R[i] << "\n";
#else
fstream fout("stramosi.out", fstream::out);
for (int i = 0; i < M; i++)
fout << R[i] << "\n";
fout.close();
#endif
return 0;
}