Cod sursa(job #2452988)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 1 septembrie 2019 23:39:13
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int t[250010], n, m, nod, k, dp[250010][20];

int stramos(int nod, int k) {
    if(!nod)
        return 0;
    else if(!k)
        return nod;
    else {
        int x = 0;
        while(1 << x <= k)
            x++;
        x--;
        return stramos(dp[nod][x], k-(1<<x));
    }
}

int main() {
    f >> n >> m;
    for(int i = 1; i <= n; i++)
        f >> t[i];

    for(int i = 1; i <= n; i++) {
        dp[i][0] = t[i];
        for(int j = 1; (1 << j) <= 250000; j++) {
            dp[i][j] = dp[dp[i][j-1]][j-1];
            if(!dp[i][j])
                break;
        }
    }

    for(int i = 1; i <= m; i++) {
        f >> nod >> k;
        g << stramos(nod, k) << '\n';
    }

}