Pagini recente » Cod sursa (job #375615) | Cod sursa (job #1615571) | Cod sursa (job #1615244) | Cod sursa (job #1488710) | Cod sursa (job #395153)
Cod sursa(job #395153)
#include <fstream>
using namespace std;
#define nmax 250010
#define pow(y) 1<<y
int A[20][nmax];
int n,m,i,j,k,p,q;
int main()
{
FILE *f=fopen("stramosi.in","r");
//ifstream f("stramosi.in");
FILE *g=fopen("stramosi.out","w");
//ofstream g("stramosi.out");
//f>>n>>m;
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;++i) fscanf(f,"%d",&A[0][i]);
k=1;
while(pow(k)<=n)
{
for(i=1;i<=n;i++)
A[k][i]=A[k-1][A[k-1][i]];
++k;
}
for(i=1;i<=m;++i)
{
fscanf(f,"%d %d",&p,&q);
//f>>p>>q;
while(p&&q)
{
for(j=k;j>=0&&p&&q;--j)
if(pow(j)<=q&&p&&q)
{
p=A[j][p];
q-=pow(j);
}
fprintf(g,"%d\n",p);
//g<<p<<endl;
}
}
return 0;
}