Pagini recente » Diferente pentru problema/joculet intre reviziile 26 si 23 | Monitorul de evaluare | Diferente pentru problema/oglinzi intre reviziile 2 si 1 | Cod sursa (job #2627363)
#include<bits/stdc++.h>
using namespace std;ifstream fin("stramosi.in");ofstream fout("stramosi.out");const int nmax=250000;int n,m,dp[nmax+5][19];int main()
{fin>>n>>m;for(int i=1;i<=n;++i)
{fin>>dp[i][0];}
for(int j=1;j<=18;++j)
{for(int i=1;i<=n;++i)
{dp[i][j]=dp[dp[i][j-1]][j-1];}}
for(int i=1;i<=m;++i)
{int p,q;fin>>q>>p;int stramos=q,c=0;while(p!=0)
{if(p&1!=0)
{stramos=dp[stramos][c];}
p>>=1;++c;}
fout<<stramos<<'\n';}
fin.close();fout.close();return 0;}