Cod sursa(job #3274121)
Utilizator | Data | 5 februarie 2025 11:14:41 | |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <fstream>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int n,q,dp[250005][20],x,k;
int main()
{
in>>n>>q;
for(int i=1;i<=n;i++)
in>>dp[i][0];
for(int i=1;(1<<i)<=n;i++)
for(int j=1;j<=n;j++)
dp[j][i]=dp[dp[j][i-1]][i-1];
/*
for(int i=1;(1<<i)<=n;i++)
{
for(int j=1;j<=n;j++)
out<<dp[j][i]<<' ';
out<<'\n';
}
*/
for(int i=1;i<=q;i++)
{
in>>x>>k;
for(int j=20;j>=0;j--)
{
if((1<<j)<=k)
{
k-=(1<<j);
x=dp[x][j];
}
}
out<<x<<'\n';
}
}