Cod sursa(job #2940335)
Utilizator | Data | 15 noiembrie 2022 12:03:31 | |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <fstream>
using namespace std;
int n, q, nod, dist, D[250010][20];
int main (){
ifstream fin ("stramosi.in");
ofstream fout("stramosi.out");
fin>>n>>q;
for (int i=1;i<=n;i++){
fin>>D[i][0];
}
for (int k=1;(1<<k)<=n;k++){
for (int i=1;i<=n;i++){
D[i][k]=D[D[i][k-1]][k-1];
}
}
for (int i=1;i<=q;i++){
fin>>nod>>dist;
for (int j=18;j>=0;j--){
if (dist>=(1<<j)){
dist-=(1<<j);
nod=D[nod][j];
}
}
fout<<nod<<"\n";
}
return 0;
}