Pagini recente » Cod sursa (job #614846) | Cod sursa (job #469095) | Cod sursa (job #2040917) | Cod sursa (job #1691540) | Cod sursa (job #1585744)
#include <cstdio>
using namespace std;
int n , m , nod , p , q ;
int d[20][250005] ;
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d %d",&n,&m);
for ( int i = 1 ; i <= n ; ++i )
{
scanf("%d ",&d[0][i]);
}
for ( int i = 1 ; i <= 18 ; ++i )
{
for ( int j = 1 ; j <= n ; ++j )
{
d[i][j] = d[i-1][d[i-1][j]] ;
}
}
for ( int i = 1 ; i <= m ; i++ )
{
scanf("%d %d",&q,&p);
while ( p > 0 )
{
int p2 = 1 , i ;
for ( i = 0 ; p2 * 2 <= p ; i++ ) p2 = p2 * 2 ;
q = d[i][q] ;
p = p - p2 ;
}
printf("%d\n",q);
}
return 0 ;
}