Pagini recente » Cod sursa (job #3223074) | Cod sursa (job #2673584) | Cod sursa (job #840874) | Cod sursa (job #2409664) | Cod sursa (job #253145)
Cod sursa(job #253145)
#include <stdio.h>
#define nmax 250001
long a[nmax][21],b[nmax];
FILE *f,*g;
int main()
{
long n,m,i,j,p,q,x,nr,y,k;
f=fopen("stramosi.in","rt");
g=fopen("stramosi.out","wt");
fscanf(f,"%ld %ld\n",&n,&m);
for (i=1;i<=n;i++)
{
fscanf(f,"%ld",&b[i]);
a[i][0]=b[i];
}
for (i=1;i<=n;i++)
for (k=1;k<18;k++)
{
a[i][k] = a[ a[i][k-1] ] [k-1];
}
for (i=1;i<=m;i++)
{
fscanf(f,"%ld %ld\n",&p,&q);
while (q)
{
nr=1;
y=0;
while (2*nr<=q&&y<17)
{nr*=2;y++;}
x=a[p][y];
p=x;
q-=nr;
}
fprintf(g,"%ld\n",x);
}
fclose(f);
fclose(g);
return 0;
}