Pagini recente » Cod sursa (job #1175127) | Cod sursa (job #2610188) | Cod sursa (job #2725965) | Cod sursa (job #1952944) | Cod sursa (job #395144)
Cod sursa(job #395144)
#include <stdio.h>
#define doila(z) (1<<z)
#define nmax 350010
int A[20][nmax];
int main()
{
FILE *f=fopen("stramosi.in","r");
FILE *g=fopen("stramosi.out","w");
int n,m,i,j,k,p,q;
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%d ",&A[0][i]);
for(i=1;doila(i)<=n;++i)
{
for(j=1;j<=n;++j)A[i][j]=A[i-1][A[i-1][j]];
}
for(k=1;k<=m;++k)
{
fscanf(f,"%d %d",&p,&q);
while(p && q)
for(i=q;i>=0 && p && q;--i)
if(doila(i)<=q && p && q)
{
p=A[i][p];
q-=doila(i);
}
fprintf(g,"%d\n",p);
}
return 0;
}