Pagini recente » Cod sursa (job #1634802) | Cod sursa (job #573081) | Cod sursa (job #1204626) | Cod sursa (job #366298) | Cod sursa (job #3211681)
#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;
const int BASE = 5;
const int NMAX = 25e4+2;
const int LMAX = 8;
int n,m,vf[NMAX],up[LMAX][NMAX];
vector<int> v[NMAX];
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++){
int x;
fin >> x;
if(x == 0){
continue;
}
up[0][i] = x;
}
for(int i = 1; i < LMAX; i++){
for(int j = 1; j <= n; j++){
up[i][j] = up[i-1][j];
for(int k = 1; k < BASE; k++){
up[i][j] = up[i-1][up[i][j]];
}
}
}
auto query = [&](int nod, int k) -> int {
int ans = nod;
int pos = 0;
while(k){
int dig = k%BASE;
for(int i = 1; i <= dig; i++){
ans = up[pos][ans];
}
k /= BASE;
pos++;
}
return ans;
};
for(int i = 1; i <= m; i++){
int q, p;
fin >> q >> p;
fout << query(q, p) << "\n";
}
return 0;
}