Pagini recente » Cod sursa (job #2318446) | Cod sursa (job #402845) | Cod sursa (job #2960697) | Cod sursa (job #242987) | Cod sursa (job #2201847)
#include <bits/stdc++.h>
#define lim 250010
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int n, m, dp[19][lim], logaritm[lim], stramosi[lim];
int cautare(int care, int cnt)
{
for ( int i = logaritm[n]; i >= 0; --i )
{
if ( 1<<i <= cnt )
{
care = dp[i][care];
cnt -= (1<<i);
}
}
return care;
}
int main()
{
ios::sync_with_stdio(false);
fin.tie(0); fout.tie(0);
fin>>n>>m;
for ( int i = 1; i <= n; i++ )
{
fin>>dp[0][i];
logaritm[i] = logaritm[i/2]+1;
}
for ( int i = 1; i <= logaritm[n]; ++i )
for ( int j = 1; j <= n; ++j )
dp[i][j] = dp[i-1][dp[i-1][j]];
for ( int i = 1; i <= m; ++i )
{
int q, p;
fin>>q>>p;
fout<<cautare(q, p)<<'\n';
}
}