Cod sursa(job #2216148)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 25 iunie 2018 15:28:11
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");

const int NMAX = 250005;
int str[19][NMAX];

int solve(int nod, int stramos) {
    if(stramos == 0)
        return nod;
    int p = 0;
    while((1 << p) <= stramos)
        p ++;
    p --;
    return solve(str[p][nod], stramos - (1 << p));
}

int main() {
    int n, q;
    in >> n >> q;
    for (int i = 1; i <= n; i ++)
        in >> str[0][i];
    for (int i = 1; i <= 17; i ++)
        for(int j = 1; j <= n; j ++)
            str[i][j] = str[i-1][str[i-1][j]];
    for(int test = 1; test <= q; test ++) {
        int stramos, nod;
        in >> nod >> stramos;
        out << solve(nod, stramos) << "\n";
    }

    return 0;
}