Pagini recente » Cod sursa (job #625938) | Cod sursa (job #2197481) | Cod sursa (job #962486) | Cod sursa (job #3169938) | Cod sursa (job #1253175)
#include<fstream>
using namespace std;
ifstream fin( "stramosi.in" );
ofstream fout( "stramosi.out" );
const int amax = 18;
const int nmax = 250000;
int d[ amax ][ nmax + 1 ];
int main() {
int n, q, x, y, k;
fin >> n >> q;
for( int i = 1; i <= n; ++ i ) {
fin >> d[ 0 ][ i ];
}
for( int j = 1; j < amax; ++ j ) {
for( int i = 1; i <= n; ++ i ) {
d[ j ][ i ] = d[ j - 1 ][ d[j - 1][ i ] ];
}
}
while ( q -- ) {
fin >> x >> y;
k = 0;
while ( y > 0 ) {
if ( y % 2 == 1 ) {
x = d[ k ][ x ];
}
++ k;
y /= 2;
}
fout << x << "\n";
}
fin.close();
fout.close();
return 0;
}