Pagini recente » Cod sursa (job #1536026) | Cod sursa (job #1520618) | Cod sursa (job #1170487) | Cod sursa (job #2740343) | Cod sursa (job #351363)
Cod sursa(job #351363)
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *f,*g;
int n,m,p,q,i,j;
int *a,*b[20];
f=fopen("stramosi.in","r");
g=fopen("stramosi.out","w");
fscanf(f,"%d%d",&n,&m);
a=(int*)malloc((n+1)*sizeof(int));
for(i=0;i<20;i++)
b[i]=(int*)malloc((n+1)*sizeof(int));
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&a[i]);
b[0][i]=a[i];
}
for(j=1;j<20;j++)
for(i=1;i<=n;i++)
b[j][i]=b[j-1][b[j-1][i]];
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&q,&p);
for(j=19;j>=0;j--)
if(p&(1<<j))
{
q=b[j][q];
p-=1<<j;
}
fprintf(g,"%d\n",q);
}
fclose(f);
fclose(g);
return 0;
}