Pagini recente » Cod sursa (job #2226341) | Cod sursa (job #2536382) | Cod sursa (job #2352838) | Cod sursa (job #2043063) | Cod sursa (job #1385761)
#include <stdio.h>
using namespace std;
const int N=250002;
const int LOG=19;
int d[LOG][N];
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[0][i]);
for(j=1;(1<<j)<=n;j++)
{
for(i=1;i<=n;i++)
{
d[j][i]=d[j-1][d[j-1][i]];
//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[pow][q];
}
pow--;
}
fprintf(out,"%d\n",q);
}
return 0;
}