Cod sursa(job #2836696)

Utilizator florinrafiliuRafiliu Florin florinrafiliu Data 20 ianuarie 2022 19:23:58
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;

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

const int maxN = 25e4 + 5;
const int maxLog = 20;

int stramos[maxLog][maxN];

int solve(int i, int k) {
    int putere = 0, ans = i;
    while(k) {
        if(k % 2 == 1)
            ans = stramos[putere][ans];
        putere++;
        k /= 2;
    }
    return ans;
}

int main() {

    int n, q; fin >> n >> q;

    for(int i = 1; i <= n; ++i)
        fin >> stramos[0][i];

    for(int k = 1; k <= 18; ++k)
        for(int i = 1; i <= n; ++i)
            stramos[k][i] = stramos[k-1][stramos[k-1][i]];

    for(int i = 1; i <= q; ++i) {
        int k, ind; fin >> ind >> k;
        fout << solve(ind, k) << "\n";
    }

    return 0;
}