Cod sursa(job #2729836)
Utilizator | Buca Mihnea-Vicentiu UnknownPercentage | Data | 25 martie 2021 14:35:51 |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int up[250001][18];
int N, M;
int main(){
f >> N >> M;
for(int i = 1;i <= N;i++)
f >> up[i][0];
for(int i = 1;i <= N;i++)
for(int k = 1;(1 << k) <= N;k++)
up[i][k] = up[up[i][k - 1]][k - 1];
for(int i = 1;i <= M;i++){
int lvl, nod;
f >> nod >> lvl;
int ans = 0;
while(lvl){
if(lvl & 1) nod = up[nod][ans];
ans++;
lvl >>= 1;
}
g << nod << "\n";
}
}