Pagini recente » Cod sursa (job #1994945) | Cod sursa (job #1773957) | Cod sursa (job #1560571) | Cod sursa (job #287345) | Cod sursa (job #446789)
Cod sursa(job #446789)
# include <fstream>
# include <iostream>
using namespace std;
int a[30][250003], n, m;
void calcul ()
{
int p=1;
for (int k=1;2*p<=n;++k, p*=2)
for(int i=1;i<=n;i++)
a[k][i]=a[k-1][a[k-1][i]];
}
int stramosi (int p, int q)
{
int k=1, e=0;
while (2*k<=p)k*=2, ++e;
if (a[e][q]==0)return 0;
if (k==p)return a[e][q];
return stramosi(p-k, a[e][q]);
}
int main ()
{
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>a[0][i];
calcul();
int p, q;
for(;m--;)
{
fin>>q>>p;
fout<<stramosi(p, q)<<"\n";
}
return 0;
}