Cod sursa(job #2777163)

Utilizator BogdanRazvanBogdan Razvan BogdanRazvan Data 22 septembrie 2021 13:09:54
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

void usain_bolt()
{
    ios::sync_with_stdio(false);
    fin.tie(0);
}

const int N = 250005;

int dp[22][N];
int main()
{
    usain_bolt();

    int n, q;

    fin >> n >> q;
    for(int i = 1; i <= n; ++i) {
        int x;

        fin >> x;
        dp[0][i] = x;
    }
    for(int i = 1; (1 << i) <= n; ++i) {
        for(int j = 1; j <= n; ++j) {
            dp[i][j] = dp[i - 1][dp[i - 1][j]];
        }
    }
    int nod, up;
    for(; q; --q) {

        fin >> nod >> up;
        int pwr = 0;
        while(up > 0) {
            if(up & 1) {
                nod = dp[pwr][nod];
            }
            up >>= 1, ++pwr;
        }
        fout << nod << "\n";
    }
    return 0;
}