Pagini recente » Borderou de evaluare (job #2548696) | Cod sursa (job #1819510) | Clasamentul arhivei de probleme | Clasamentul arhivei de probleme | Cod sursa (job #469789)
Cod sursa(job #469789)
#include <iostream>
#include <fstream>
using namespace std;
const char iname[] = "stramosi.in";
const char oname[] = "stramosi.out";
ifstream fin(iname);
ofstream fout(oname);
int N, M, dp[22][250005], i, j, k, P, Q;
int main()
{
fin >> N >> M;
for(i = 1; i <= N; i ++)
fin >> dp[0][i];
for(i = 1; i <= 20; i ++)
for(j = 1; j <= N; j ++)
dp[i][j] = dp[i - 1][dp[i - 1][j]];
for(i = 1; i <= M; i ++)
{
fin >> P >> Q;
for(j = 20; j >= 0; j --)
{
if(1 << j <= Q)
{
P = dp[j][P];
Q -= 1 << j;
}
}
fout << P << "\n";
}
return 0;
}