Pagini recente » Cod sursa (job #2230655) | Cod sursa (job #2196787) | Cod sursa (job #484400) | Cod sursa (job #1538529) | Cod sursa (job #192119)
Cod sursa(job #192119)
#include<stdio.h>
FILE *f=fopen("stramosi.in","r"),
*g=fopen("stramosi.out","w");
int a[30][250099],i,j,n,k,m,p,q,r;
char c[1750010];
void citt()
{
fgets(c,1750010,f);
int i,au=0,au1,au2;
for(i=0;c[i]!='\0';++i)
{
if(c[i]>='0')
{
au1=au<<3;
au2=au<<1;
au=au1+au2+c[i]-'0';
}
else
{
a[0][++n]=au;
au=0;
}
}
}
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",&n,&m);
n=0;
citt();
r=n;
k=17;
for(i=1;i<=k;++i)
for(j=1;j<=n;++j)
{ a[i][j]=a[i-1][a[i-1][j]];
}
for(i=1;i<=m;++i) { cit(p,q);
k=0;
while(p&&q){ if(p&1) q=a[k][q];
p>>=1;
++k;
}
fprintf(g,"%d\n",q);
}
fclose(f);
fclose(g);
return 0;
}