Pagini recente » Cod sursa (job #1041093) | Cod sursa (job #1449877) | Cod sursa (job #1647666) | Cod sursa (job #2594462) | Cod sursa (job #1117685)
#include <stdio.h>
#include <cmath>
using namespace std;
FILE *f=fopen("stramosi.in","r");
FILE *g=fopen("stramosi.out","w");
int i,j,lg,v[20][250004],n,m,p,q;
void rez()
{
int i,j;
for(j=1;j<=lg ;j++)
for(i=1;i<=n;i++)
v[j][i]=v[j-1][v[j-1][i]];
}
void query (int a,int b)
{
int k;
b<<=1;
for(k=0;k<=lg && a;++k)
{
b>>=1;
if (b&1)a=v[k][a];
}
fprintf(g,"%d\n",a);
}
int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[0][i]);
lg=log2(n);
rez();
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&p,&q);
query(p,q);
}
fclose(g);
return 0;
}