Pagini recente » Cod sursa (job #1322072) | Cod sursa (job #3247812) | Cod sursa (job #3150183) | Cod sursa (job #3228981) | Cod sursa (job #1571496)
#include<fstream>
#include<cmath>
#include<iostream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
const int N = 250010;
const int logN = 20;
int n, m, t, v[N], vRad[logN][N], pasRad;
int stramosi(int nod, int pasi) {
int k = t;
while (k >= 0) {
if (pasi >= (1<<k)) {
pasi = pasi - (1<<k);
nod = vRad[k][nod];
}
k--;
}
return nod;
}
int main() {
f>>n>>m;
for (int i = 1 ; i <= n ; i++) {
f>>v[i];
vRad[0][i] = v[i];
}
for (int j = 1 ; (1<<j) <= n ; j++) {
t = j;
for (int i = 1 ; i <= n ; i++) {
vRad[j][i] = vRad[j-1][vRad[j-1][i]];
}
}
for (int i = 1 ; i <= m ; i++) {
int nod, pasi;
f>>nod>>pasi;
g<<stramosi(nod,pasi)<<'\n';
}
f.close();
g.close();
return 0;
}