Cod sursa(job #3142746)
| Utilizator | Data | 24 iulie 2023 10:31:11 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, i, j, x, y;
int main() {
fin >> n >> q;
vector<vector<int>> s(n + 2, vector<int>(20));
for(i = 1; i <= n; i++) fin >> s[i][0];
for(j = 1; j < 19; j++) {
for(i = 1; i <= n; i++) s[i][j] = s[s[i][j - 1]][j - 1];
}
while(q--) {
fin >> x >> y;
for(i = 18; i >= 0; i--) {
if(y >= (1 << i)) {
x = s[x][i];
y -= (1 << i);
}
}
fout << x << "\n";
}
return 0;
}
