Cod sursa(job #2203903)

Utilizator oso.andinoooIonut Stan oso.andinooo Data 13 mai 2018 17:08:15
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;

int dp[21][100005];

int main() {
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    int n, m, nod, x, dist;

    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
        scanf("%d", & x);
        dp[0][i] = x; }

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= 20; j++) {
            dp[j][i] = dp[j - 1][dp[j - 1][i]]; } }

    for (int i = 1; i <= m; i++) {
        int p = 1 << 20, e = 20;
        scanf("%d %d", & nod, &dist);
        while (dist) {
            if (dist >= p) {
                dist = dist - p;
                nod = dp[e][nod]; }
            e--;
            p = p / 2; }
        printf("%d\n", nod); }

    return 0; }