Pagini recente » Cod sursa (job #2505450) | Cod sursa (job #250842) | Cod sursa (job #2173241) | Cod sursa (job #3231928) | Cod sursa (job #531473)
Cod sursa(job #531473)
#include <stdio.h>
using namespace std;
int A[19][250001];
int n,m,q,p;
FILE *f,*g;
void citire()
{
int i;
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++)
fscanf(f,"%d",&A[0][i]);
}
void produce()
{
int i,j;
for (i=1;i<=18;i++)
for (j=1;j<=n;j++)
A[i][j]=A[i-1][A[i-1][j]];
}
int stramosi(int p, int q)
{
int i=0;
while (p!=0)
{
if (p&1)
q=A[i][q];
++i;
p>>=1;
}
return q;
}
void rezolva()
{
int i;
for (i=1;i<=m;i++)
{
fscanf(f,"%d %d",&q,&p);
fprintf(g,"%d \n",stramosi(p,q));
}
}
int main()
{
f=fopen("stramosi.in","r");
g=fopen("stramosi.out","w");
citire();
produce();
rezolva();
fclose(f);
fclose(g);
return 0;
}