Pagini recente » Monitorul de evaluare | Diferente pentru home intre reviziile 297 si 902 | Istoria paginii runda/simulare-40-1 | Cod sursa (job #2040246) | Cod sursa (job #2021153)
#include <bits/stdc++.h>
using namespace std;
ofstream fout ("stramosi.out");
ifstream fin ("stramosi.in");
int rsp[17][250005],lg[250005],i,j,n,m,aux,p,q,suma;
int main()
{
fin>>n>>m;
for( i = 1 ; i <= n ; i++ )
fin>>rsp[ 0 ][ i ];
for( i = 2 ; i <= n ; i++ )
lg[ i ] = lg[ i / 2 ] + 1;
for( i = 1 ; i <= 16 ; i++ )
{
for( j = 1 ; j <= n ; j++ )
{
rsp[ i ][ j ] = rsp[ i - 1 ][ rsp[ i - 1 ][ j ] ];
}
}
for( i = 1 ; i <= m ; i++ )
{
fin>>p>>q;
suma = q;
while( suma )
{
aux = lg[ suma ];
suma -= ( 1 << aux );
if( suma == 0 )
{
fout<<rsp[ aux ][ p ]<<'\n';
break;
}
p = rsp[ aux ][ p ];
}
}
}