Pagini recente » Cod sursa (job #1755255) | Cod sursa (job #1761716) | Cod sursa (job #622053) | Cod sursa (job #942918) | Cod sursa (job #457658)
Cod sursa(job #457658)
# include <fstream>
using namespace std;
int v[1<<5][1<<18],n,m;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int stramosi (int p, int q)
{
int k=0;
while (1<<k<=p)
++k;
--k;
if (v[k][q]==0)
return 0;
if (1<<k==p)
return v[k][q];
return stramosi(p-(1<<k),v[k][q]);
}
int main ()
{
int i,j;
in>>n>>m;
for(int i=1;i<=n;i++)
in>>v[0][i];
for (i=1;i<=18;i++)
for(j=1;j<=n;j++)
v[i][j]=v[i-1][v[i-1][j]];
while(m--)
{
in>>j>>i;
out<<stramosi(i,j)<<"\n";
}
return 0;
}