Pagini recente » Cod sursa (job #2060116) | Cod sursa (job #629059) | Cod sursa (job #528465) | Cod sursa (job #983120) | Cod sursa (job #2836696)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
const int maxN = 25e4 + 5;
const int maxLog = 20;
int stramos[maxLog][maxN];
int solve(int i, int k) {
int putere = 0, ans = i;
while(k) {
if(k % 2 == 1)
ans = stramos[putere][ans];
putere++;
k /= 2;
}
return ans;
}
int main() {
int n, q; fin >> n >> q;
for(int i = 1; i <= n; ++i)
fin >> stramos[0][i];
for(int k = 1; k <= 18; ++k)
for(int i = 1; i <= n; ++i)
stramos[k][i] = stramos[k-1][stramos[k-1][i]];
for(int i = 1; i <= q; ++i) {
int k, ind; fin >> ind >> k;
fout << solve(ind, k) << "\n";
}
return 0;
}