Pagini recente » Cod sursa (job #453817) | Cod sursa (job #1398233) | Cod sursa (job #2167117) | Cod sursa (job #704166) | Cod sursa (job #1654131)
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#define maxN 250000 + 5
using namespace std;
int S[30][maxN];
int log(int n){
int a = 0, b = 1;
while ((b << 1) <= n){
a++;
b <<= 1;
}
return a;
}
int vezi(int q, int p){
int i = 0;
while (p){
if (p % 2)
q = S[i][q];
i++;
p >>= 1;
}
return q;
}
int main()
{
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n, m;
f >> n >> m;
for (int i = 1; i <= n; ++i)
f >> S[0][i];
int lim = log(n);
for (int i = 1; i <= lim; ++i)
for (int j = 1; j <= n; ++j)
S[i][j] = S[i-1][S[i-1][j]];
for (int k = 0; k < m; ++k){
int x, y;
f >> x >> y;
g << vezi(x, y) << "\n";
}
f.close();
g.close();
return 0;
}