Cod sursa(job #2052453)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 30 octombrie 2017 17:02:42
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#define DIM 250002

using namespace std;

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

int n, m, x, y, put, p[DIM], d[32][DIM];

int main(){

    f>>n>>m;

    for(int i = 1; i <= n; ++ i)
        f>>d[0][i];

    for(int k = 1; (1 << k) <= n; ++ k)
         for(int i = 1; i <= n; ++ i)
            d[k][i] = d[k - 1][d[k - 1][i]];

    for(int i = 2; i <= n; ++ i)
        p[i] = 1 + p[i / 2];

    for(int i = 1; i<= m; ++ i){
        f>>x>>y;
        while(y){
            put = p[y];
            x = d[put][x];
            y -= (1 << put);
        }
        g<<x<<'\n';;
    }

    return 0;
}