Pagini recente » Cod sursa (job #2245088) | Cod sursa (job #729178) | Cod sursa (job #3262555) | Cod sursa (job #2138711) | Cod sursa (job #1674638)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("stramosi.in");
ofstream out("stramosi.out");
const int N_max=250005, L = 18;
int N,M;
int t[L][N_max];
int raspuns (int p, int q)
{
int i=0;
while(q!=0)
{
if(q%2!=0)
p=t[i][p];
i++;
q/=2;
}
return p;
}
int main()
{
int j;
in>> N >> M;
for(int i=1; i<=N; i++)
in>>t[0][i];
for(int i=1; i<L; i++)
for(j=1; j<=N; j++)
t[i][j] = t[i-1][ t[i-1][j] ];
while(M--)
{
int p,q;
in>>q>>p;
p = raspuns(p,q);
out<< t[p][q]<< '\n';
}
return 0;
}