Pagini recente » Cod sursa (job #1715021) | Cod sursa (job #1623848) | Cod sursa (job #1780141) | Cod sursa (job #54485) | Cod sursa (job #2201842)
#include <bits/stdc++.h>
#define lim 250010
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int n, m, dp[lim][30], logaritm[lim], stramosi[lim];
int cautare(int care, int cnt)
{
for ( int i = logaritm[n]; i >= 0; --i )
{
if ( 1<<i <= cnt )
{
care = dp[care][i];
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[i][0];
for ( int i = 1; i <= n; ++i )
logaritm[i] = logaritm[i/2]+1;
for ( int i = 1; i <= logaritm[n]; ++i )
for ( int j = 1; j <= n; ++j )
dp[j][i] = dp[dp[j][i-1]][i-1];
for ( int i = 1; i <= m; ++i )
{
int q, p;
fin>>q>>p;
fout<<cautare(q, p)<<'\n';
}
}