Pagini recente » Cod sursa (job #1062152) | Cod sursa (job #1400376) | Cod sursa (job #1156529) | Cod sursa (job #82916) | Cod sursa (job #27663)
Cod sursa(job #27663)
#include <stdio.h>
#define nmax 250001
long a[nmax][15],b[nmax];
FILE *f,*g;
int main()
{
long n,m,i,j,p,q,x,nr,y;
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]);
for (i=1;i<=n;i++)
{
x=b[i];
y=1;
nr=1;
while (x&&a[i][0]<12)
{
nr*=2;
a[i][++a[i][0]]=x;
while (y<nr&&x)
{
y++;
x=b[x];
}
}
}
for (i=1;i<=m;i++)
{
fscanf(f,"%ld %ld\n",&p,&q);
while (q)
{
nr=1;
y=1;
while (2*nr<=q&&y<11)
{nr*=2;y++;}
x=a[p][y];
p=x;
q-=nr;
}
fprintf(g,"%ld\n",x);
}
fclose(f);
fclose(g);
return 0;
}