Pagini recente » Cod sursa (job #106200) | Cod sursa (job #187368) | Cod sursa (job #1538601) | Cod sursa (job #1688421) | Cod sursa (job #1167541)
#include<fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m,dp[250005][21],logaritm[250005],puteri[25];
inline void Citire()
{
int i,j;
fin>>n>>m;
for (i=1;i<=n;i++)
fin>>dp[i][0];
for (i=2;i<=n;i++)
logaritm[i]=logaritm[i>>1]+1;
puteri[0]=1;
puteri[1]=2;
for (i=2;i<=20;i++)
puteri[i]=puteri[i-1]*2;
for (i=1;i<=n;i++)
for (j=1;j<=20;j++)
dp[i][j]=dp[dp[i][j-1]][j-1];
}
inline void DP()
{
int i,Q,p,aux,tata;
for (i=1;i<=m;i++)
{
fin>>Q>>p;tata=0;
while (p)
{
aux=logaritm[p];
p-=puteri[aux];
if (dp[Q][aux]==0)
{
tata=0;
p=0;
}
else
{
tata=dp[Q][aux];
Q=tata;
}
}
fout<<tata<<"\n";
}
}
int main()
{
Citire();
DP();
return 0;
}