Pagini recente » Borderou de evaluare (job #1931569) | Borderou de evaluare (job #1567786) | Cod sursa (job #2628268) | Cod sursa (job #2527946) | Cod sursa (job #1778978)
# include <fstream>
using namespace std;
# define MAX_N 250000
# define MAX_LG 20
int s[MAX_LG][1 + MAX_N];
int query( int p, int q ) {
int i = 0;
while ( p != 0 ) {
if ( p % 2 != 0 )
q = s[i][q];
p /= 2;
i ++;
}
return q;
}
int main() {
ifstream fin( "stramosi.in" );
ofstream fout( "stramosi.out" );
int n, m, i, j, p, q;
fin >> n >> m;
for ( i = 1; i <= n; i ++ )
fin >> s[0][i];
for ( i = 1; ( 1 << i ) <= n; i ++ )
for ( j = 1; j <= n; j ++ )
s[i][j] = s[i - 1][s[i - 1][j]];
for ( i = 0; i < m; i ++ ) {
fin >> q >> p;
fout << query( p, q ) << '\n';
}
fin.close();
fout.close();
return 0;
}