Cod sursa(job #2968661)

Utilizator TheEpicWipedCreaVlad Chirita Alexandru TheEpicWipedCrea Data 21 ianuarie 2023 18:37:39
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in  ("stramosi.in");
ofstream out("stramosi.out");

#define maxN 250000
#define maxPut 18

int v[maxN+1][maxPut+1];
int power[maxPut+1];

int main(){
    int pow=1;
    power[0]=1;
    for(int i=1;i<=maxPut;i++){
        pow<<=1;
        power[i]=pow;
    }

    int n,q;
    in>>n>>q;
    for(int i=1;i<=n;i++){
        in>>v[i][0];
    }
    int p=1,pos=1;
    while(p<=n){
        for(int i=1;i<=n;i++){
            v[i][pos]=v[v[i][pos-1]][pos-1];
        }
        pos++;
        p<<=1;
    }

    for(int z=1;z<=q;z++){
        int a,b;
        in>>a>>b;
        int powi=maxPut;
        while(b>0){
            while(power[powi]>b){
                powi--;
            }
            a=v[a][powi];
            b-=power[powi];
        }
        out<<a<<'\n';
    }
}