Cod sursa(job #2789111)

Utilizator NeganAlex Mihalcea Negan Data 26 octombrie 2021 21:39:08
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m;
int dp[250005][20];
int lll[250005];
int main()
{
    int i, x, y, j;
    fin >> n >> m;
    for(i = 1;i <= n;i++)
        fin >> dp[i][0];
    for(i = 1;i <= n;i++)
        for(j = 1;j <= 19;j++)
            dp[i][j] = dp[dp[i][j - 1]][j - 1];
    lll[1] = 0;
    for(i = 2;i <= 250000;i++)
        lll[i] = lll[i / 2] + 1;
    while(m--)
    {
        fin >> x >> y;
        int nod = x;
        while(y != 0)
        {
            int p = lll[y];
            nod = dp[nod][p];
            y -= (1 << p);
        }
        fout << nod << "\n";
    }
    return 0;
}