Cod sursa(job #3291460)

Utilizator IleaIlea Bogdan Ilea Data 4 aprilie 2025 18:55:48
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
using namespace std;

#define NMAX 250001
#define LOGMAX 18

int dp[LOGMAX][NMAX];
int n, q;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    cin>>n>>q;
    for (int i=1; i<=n; ++i){
        cin>>dp[0][i];
    }
    for (int i=1; (1<<i)<=n; ++i){
        for (int j=1; j<=n; ++j){
            dp[i][j]=dp[i-1][dp[i-1][j]];
        }
    }
    while (q--){
        int x, y;
        cin>>x>>y;
        int curr=x;
        for (int k=0; (1<<k)<=y; ++k){
            if ((1<<k)&y){
                curr=dp[k][curr];
            }
        }
        cout<<curr<<"\n";
    }
    return 0;
}