Pagini recente » Cod sursa (job #2701419) | Arhiva de probleme | Cod sursa (job #738804) | Cod sursa (job #1533030) | Cod sursa (job #318745)
Cod sursa(job #318745)
#include <stdio.h>
#define Nmax 250100
int n,q,a[19][Nmax];
void afiseaza(int j)
{
int i,k;
for(k=0;k<j;++k)
{
for(i=1;i<n;++i)
printf("%d ",a[k][i]);
printf("\n");
}
}
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&n,&q);
int i,s=1,j=1,x,y,k;
for(i=1;i<=n;++i)
scanf("%d",&a[0][i]);
while(s)
{
s=0;
for(i=1;i<=n;++i)
{
a[j][i]=a[j-1][a[j-1][i]];
if(a[j][i])
s=1;
}
++j;
}
// afiseaza(j);
for(k=1;k<=q;++k)
{
int nr;
scanf("%d%d",&y,&x);
while(x)
{
nr=1;
j=0;
while((nr<<1)<=x)
{
nr=nr<<1;
++j;
}
y=a[j][y];
x-=nr;
}
printf("%d\n",y);
}
return 0;
}