Pagini recente » Cod sursa (job #197550) | Cod sursa (job #2699143) | Cod sursa (job #2460772) | Cod sursa (job #546038) | Cod sursa (job #856114)
Cod sursa(job #856114)
#include<fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define NMAX 250009
int N; int M;
int TT[NMAX];
int lg[NMAX];
int A[20][NMAX];
void Solve() {
for(int i = 2; i <= N; i++)
lg[i] = lg[i/2] + 1;
for(int i = 1; i <= N; i++)
A[0][i] = TT[i];
for(int i = 1; i <= lg[N]; i++)
for(int j = 1; j <= N; j++)
A[i][j] = A[i - 1][A[i - 1][j]];
for(int i = 1; i <= M; i++) {
int x,y ;
fin >>x >> y;
while(y){
x = A[lg[y]][x];
y -= (1 << lg[y]);
}
fout << x <<'\n';
}
}
void Read() {
fin >> N>> M;
for(int i = 1; i <= N; i++)
fin >>TT[i];
}
int main() {
Read();
Solve ();
return 0;
}