Pagini recente » Cod sursa (job #1903277) | Cod sursa (job #837336) | Cod sursa (job #680421) | Cod sursa (job #2797502) | Cod sursa (job #3215508)
#include <iostream>
#include <fstream>
#define MAXN 250000
#define LOGN 19
#define DEBUG 0
using namespace std;
int d[MAXN + 1][LOGN];
int main(){
int n, q;
ifstream fin ("stramosi.in");
fin >> n >> q;
for(int i = 1; i <= n; i ++){
fin >> d[i][0];
}
for(int j = 1; (1 << j) < n; j ++)
for(int i = 1; i <= n; i ++){
d[i][j] = d[ d[i][j - 1] ][j - 1];
}
if(DEBUG){
for(int i = 1; i <= n; i ++){
for(int j = 0; (1 << j) < n; j ++){
printf("%d ", d[i][j]);
}
printf("\n");
}
}
ofstream fout ("stramosi.out");
for(int i = 0; i < q; i ++){
int x, p;
fin >> x >> p;
for(int j = 0; (1 << j) < n; j ++)
if(p & (1 << j))
x = d[x][j];
fout << x << "\n";
}
fin.close();
fout.close();
return 0;
}