Cod sursa(job #1608765)

Utilizator sucureiSucureiRobert sucurei Data 22 februarie 2016 12:40:45
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

#define NMAX 250005

using namespace std;

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

int n , m , q , p , x;
int dp[NMAX][25];

int main() {
    f >> n >> m;

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

    for(int i = 1 ; i <= m ; ++i) {
        f >> q >> p;
        for(int j = 20 ; j >= 0 ; --j) {
            if((1 << j) <= p) {
                p -= (1 << j);
                q = dp[q][j];
            }
        }

        g << q << '\n';
    }
    return 0;
}