Cod sursa(job #3277235)

Utilizator builder23Nicolae Spaidar builder23 Data 15 februarie 2025 14:10:56
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n, m, dp[18][250000];

void prep(){
fin>>n>>m;
for(int i=1; i<=n; i++)
    fin>>dp[0][i];

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

}

int putmax(int n){
if(n ==1 )return 0;
int p=1;
int i;
for( i=1; p<=n; i++)
        p=p*2;
 return i-2;
}

int main()
{
prep();
int q, p;
for(int i=1; i<=m; i++){
    fin>>q>>p;

    while(p!=0){
        q=dp[putmax(p)][q];
        p=p-pow(2, putmax(p));
    }
    fout<<q<<endl;
}

    return 0;
}