Pagini recente » Cod sursa (job #2944463) | Cod sursa (job #1839363) | Cod sursa (job #1160806) | Cod sursa (job #895037) | Cod sursa (job #1385758)
#include <stdio.h>
using namespace std;
const int N=250002;
const int LOG=19;
int d[N][LOG];
int main()
{
FILE *in=fopen("stramosi.in","r");
FILE *out=fopen("stramosi.out","w");
int i,j,n,m,q,p,pow;
fscanf(in,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(in,"%d",&d[i][0]);
for(j=1;(1<<j)<=n;j++)
{
for(i=1;i<=n;i++)
{
d[i][j]=d[d[i][j-1]][j-1];
//fprintf(out,"%d ",d[i][j]);
}
//fprintf(out,"\n");
}
for(i=1;i<=m;i++)
{
fscanf(in,"%d%d",&q,&p);
if(p>n)
{
fprintf(out,"0\n");
continue;
}
pow=18;
while(pow>=0)
{
if((1<<pow)<=p)
{
p-=(1<<pow);
q=d[q][pow];
}
pow--;
}
fprintf(out,"%d\n",q);
}
return 0;
}