Cod sursa(job #2332148)

Utilizator DajaMihaiDaja Mihai DajaMihai Data 30 ianuarie 2019 14:12:02
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<bits/stdc++.h>
#define N 250010
using namespace std;

int n,m;
int dp[N][25];
int rs;
int b[N];

int main() {
    ifstream cin("stramosi.in");
    ofstream cout("stramosi.out");

    cin>>n>>m;
    for (int i=1; i<=n; ++i) {
        int x; cin>>x;
        b[i]=x;
    }

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

    while (m--) {
        int a,p; cin>>a>>p; rs=a;
        for (int i=0; i<=20; ++i) {
            if ((1<<i) & p) rs=dp[rs][i];
        }
        cout<<rs<<'\n';

    }

    return 0;
}