Pagini recente » Cod sursa (job #1599006) | Cod sursa (job #192110)
Cod sursa(job #192110)
#include<stdio.h>
FILE *f=fopen("stramosi.in","r"),
*g=fopen("stramosi.out","w");
int a[250099][30],i,j,n,k,m,p,q,r;
char c[1750010];
void cit(int &p,int &q)
{
fgets(c,100,f);
p=q=0;
int i,j,q1,q2;
for(i=0; c[i]>='0'; i++)
{
q1=q<<3;
q2=q<<1;
q=q1+q2;
q+=c[i]-'0';
}
for(j=i+1; c[j]>='0'; j++)
p=p*10+c[j]-'0';
}
int main()
{ fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;++i) fscanf(f,"%d",&a[i][0]);
fscanf(f,"\n");
r=n;
k=17;
for(i=1;i<=k;++i)
for(j=1;j<=n;++j)
{ a[j][i]=a[a[j][i-1]][i-1];
}
for(i=1;i<=m;++i) { cit(p,q);
k=0;r=q;
while(p){ if(p&1) r=a[r][k];
p>>=1;
++k;
}
fprintf(g,"%d\n",r);
}
fclose(f);
fclose(g);
return 0;
}