Pagini recente » Cod sursa (job #2565373) | Cod sursa (job #2514570) | Cod sursa (job #397933) | Cod sursa (job #1271778) | Cod sursa (job #178279)
Cod sursa(job #178279)
#include<stdio.h>
#include<iostream.h>
#define NMAX 300000
long n,m,i,j,p[20][NMAX];
long x, y, still, contor, raspuns;
long putere_2(long a)
{
long b = 1; contor=0;
while( b < a) { b*=2; contor++; }
if(b==a) return a;
else
{contor--;
return b/2; }
}
long df(long var)
{
if(still < y && p[0][var]!=0) { still++; df( p[0][var] ); }
else raspuns = var;
}
main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%ld %ld", &n, &m);
for(j=1; j<=n; j++) scanf("%ld", &p[0][j]);
for(i=1; i<=19; i++)
for(j=1; j<=n; j++)
p[i][j] = p[i-1][ p[i-1][j] ];
for(i=1; i<=m; i++)
{
scanf("%ld %ld", &x, &y);
still = putere_2(y);
df(p[contor][x]);
printf("%ld\n" , raspuns);
}
printf("\n"); return 0; }