Pagini recente » Cod sursa (job #820386) | Cod sursa (job #1805560) | Cod sursa (job #520327) | Cod sursa (job #1757919) | Cod sursa (job #1757330)
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <limits>
#include <stack>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,m;
int a[30][250001];
int solve(int x,int y,int k)
{
for(int i=0; (1<<i)<=n; i++){
if((1<<i) & y)
x=a[i][x];
}
return x;
}
int main()
{
int x;
f >> n >> m;
for(int i=1;i<=n;i++)
{
f >> x;
a[0][i]=x;
}
int y,k=0;
for(int i=1;(1<<i)<=n;i++)
for(int j=1;j<=n;j++)
{
a[i][j]=a[i-1][a[i-1][j]];
}
for(int i=1;i<=m;i++)
{
f >> x >> y;
int aux=y;
k=0;
while(aux>1)
{
aux=aux>>1;
k++;
}
g << solve(x,y,k) << "\n";
}
/* for(int j=0;j<4;j++){
for(int i=1;i<=n;i++)
cout << a[j][i] << " ";
cout << "\n";
} */
return 0;
}