Pagini recente » Cod sursa (job #325203) | Cod sursa (job #1376202) | Cod sursa (job #2532886) | Cod sursa (job #543452) | Cod sursa (job #1778269)
#include<cstdio>
///str[i][j]=al 2^i-lea stramos al lui j
///str[i][j]=str[i-1][str[i-1][j]]
const int PMAX=18,NMAX=250001;
int str[PMAX][NMAX];
int main()
{
FILE *in=fopen("stramosi.in","r");
FILE *out=fopen("stramosi.out","w");
int n,m;
fscanf(in,"%d %d ",&n,&m);
for(int i=1;i<=n;i++)
fscanf(in,"%d ",&str[0][i]);
for(int i=1;i<PMAX;i++)
for(int j=1;j<=n;j++)
{
str[i][j]=str[i-1][str[i-1][j]];
}
for(int sq=1;sq<=m;sq++)
{
int a,b;
fscanf(in,"%d %d ",&b,&a);
int rasp=b;
for(int i = 1, j = 0; i <= a; i *= 2, j++)
if(a & i)
rasp = str[j][rasp];
fprintf(out,"%d\n",rasp);
}
fclose(in);
fclose(out);
}