Pagini recente » Cod sursa (job #74477) | Cod sursa (job #993046) | Cod sursa (job #74465) | Cod sursa (job #1321172) | Cod sursa (job #2954533)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, q, p;
int dp[20][250005];
int stramos(int q, int p){
int i=0;
while(p!=0){
if(p % 2 != 0)
q = dp[i][q];
p = (p >> 1);
i++;
}
return q;
}
int main()
{
fin >> n >> m;
for(int i=1; i<=n; i++)
fin >> dp[0][i];
int lung=(int(log2(n)));
for(int i=1; i<=lung; i++)
for(int j=1; j<=n; j++)
dp[i][j] = dp[i-1][dp[i-1][j]];
for(int i=1; i<=m; i++){
fin >> q >> p;
fout << stramos(q,p) << '\n';
}
return 0;
}