Pagini recente » Cod sursa (job #2797163) | Cod sursa (job #3219836) | Cod sursa (job #2663880) | Cod sursa (job #2601988) | Cod sursa (job #44257)
Cod sursa(job #44257)
#include <stdio.h>
#define MAX 250//002
#define MIN 21
FILE *fin,*fout;
long k,w,n,m,o,i,j,p,q,a[MIN][MAX];
void lo(long p,long &r,long &t)
{long k=0,l=1;
while (p>=l){k++;l*=2;}
r=k-1;
t=l/2;
}
int main()
{
fin=fopen("stramosi.in","rt");
fout=fopen("stramosi.out","wt");
fscanf (fin,"%ld %ld\n",&n,&m);
for (i=1;i<=n;i++) fscanf (fin,"%ld",&a[0][i]);
j=1;
lo(n,w,k);
while (j<=w)
{
for (i=1;i<=n;i++) a[j][i]=a[j-1][a[j-1][i]];
j++;
}
for (i=1;i<=m;i++)
{
fscanf (fin,"%ld %ld\n",&q,&p);
if (p<=1) fprintf(fout,"%ld\n",a[0][q]);
else
{k=0;
while (k<=p)
{w=0;
if(p-k>=2) lo(p,w,k);
q=a[w][q];
/*o=a[q];
q=o;*/
k++;
if (q==0) break;
}
fprintf(fout,"%ld\n",q);}
}
fcloseall();
return 0;
}