Pagini recente » Cercetași | Istoria paginii utilizator/szilagyi.raul | Istoria paginii utilizator/mdallee | Istoria paginii utilizator/mihaidanaila11 | Cod sursa (job #2010584)
#include <bits/stdc++.h>
#define Nmax 250001
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int a[20][Nmax];
int nlog2(int x, int &put)
{
put=1;
if(x==1) return 0;
int num=0;
while(put<=x)
{
num++;
put*=2;
}
put/=2;
return num-1;
}
int str(int nr, int x)
{
int pt;
int lg=nlog2(nr,pt);
if(nr==pt) return a[lg][x];
else
return str(nr-pt,a[lg][x]);
}
int main()
{
int n,m,i,j;
f>>n>>m;
for(i=1;i<=n;i++)
f>>a[0][i];
bool ok=true;
int N=0;
while(ok)
{
N++;
ok=false;
for(i=1;i<=n;i++)
{
a[N][i]=a[N-1][a[N-1][i]];
if(a[N][i]) ok=true;
}
}
for(;m;--m)
{
f>>i>>j;
g<<str(j,i)<<'\n';
}
return 0;
}