Cod sursa(job #2954533)

Utilizator ioana.cCaprariu Ioana ioana.c Data 14 decembrie 2022 18:52:31
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n, m, q, p;
int dp[20][250005];

int stramos(int q, int p){
    int i=0;
    while(p!=0){
        if(p % 2 != 0)
            q = dp[i][q];
        p = (p >> 1);
        i++;
    }
    return q;
}

int main()
{
    fin >> n >> m;
    for(int i=1; i<=n; i++)
        fin >> dp[0][i];
    int lung=(int(log2(n)));
    for(int i=1; i<=lung; i++)
        for(int j=1; j<=n; j++)
            dp[i][j] = dp[i-1][dp[i-1][j]];
    for(int i=1; i<=m; i++){
        fin >> q >> p;
        fout << stramos(q,p) << '\n';
    }
    return 0;
}