Cod sursa(job #2548595)

Utilizator MariusblockMoga Marius-Ioan Mariusblock Data 16 februarie 2020 20:22:19
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int A[250005][30];

void solve(int nod,int rang){
    int aux = 0;
    while(rang != 0){
        if(rang%2){
            nod = A[nod][aux];
        }
        rang /= 2;
        aux++;
    }
    fout<<nod<<'\n';
}

int main()
{
    int n,i,m,Q,P,j;
    bool s;
    fin>>n>>m;
    for(i = 1; i <= n; i++){
        fin>>A[i][0];
    }
    for(i = 1; i <= 18; i++){
        s = 0;
        for(j = 1; j <= n; j++){
            A[j][i] = A[A[j][i-1]][i-1];
            s = (s||A[j][i]);
        }
        if(s == 0){
            i = 20;
        }
    }
    for(i = 1; i <= m; i++){
        fin>>Q>>P;
        solve(Q,P);
    }
    return 0;
}