Pagini recente » Cod sursa (job #3146742) | Cod sursa (job #2317734) | Cod sursa (job #2191770) | Cod sursa (job #2517538) | Cod sursa (job #189811)
Cod sursa(job #189811)
#include <stdio.h>
#define MAXN 300001
int v[18][MAXN],n,m;
void citire ()
{
freopen("stramosi.in","r",stdin);
char s[MAXN*8]; int i,j,x;
scanf("%d%d",&n,&m);
fgets(s,64,stdin);
fgets(s,MAXN*8,stdin);
for (i=1,j=0,x=0; i<=n; ++i,++j,x=0)
{
while (s[j]>='0' && s[j]<='9')
x=x*10+s[j++]-'0';
v[0][i]=x;
}
}
void prep()
{
int i,j;
for (i=1; i<18; ++i)
for (j=0; j<=n; ++j)
v[i][j]=v[i-1][v[i-1][j]];
}
inline int answer(int a,int b)
{
int i=0;
while (b)
{
if (b & 1)
a=v[i][a];
b=b>>1; ++i;
}
return a;
}
void rezolv()
{
freopen("stramosi.out","w",stdout);
int i,a,b;
for (i=0; i<m; ++i)
{
scanf("%d%d",&a,&b);
printf("%d\n",answer(a,b));
}
fclose(stdin);
fclose(stdout);
}
int main()
{
citire();
prep();
rezolv();
return 0;
}