Cod sursa(job #3152013)

Utilizator mihaiBoantaMihai Boanta mihaiBoanta Data 23 septembrie 2023 15:26:40
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <iostream>

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


#define nmax 250000
#define logmax 18

int str[nmax];
int rmq[logmax][nmax];
int main(){
    int n,m;
    in>>n>>m;
    for(int i=0;i<n;i++){
        in>>str[i];
    }

    //rmq
    for(int i=0;i<n;i++){
        rmq[0][i]=str[i];
    }
    int k=1;
    for(int i=1;k<=n;i++){
        for(int j=0;j<n;j++){
            rmq[i][j]=rmq[i-1][rmq[i-1][j]-1];
        }
        k<<=1;
    }

    int p,q;
    for(int i=0;i<m;i++){
        in>>q>>p;
        for(int j=0;p>0;j++,p>>=1){
            if(p%2==1){
                q=rmq[j][q-1];
            }
        }
        out<<q<<"\n";
    }
}