Cod sursa(job #2557863)

Utilizator MocalinnoMoca Andrei Catalin Mocalinno Data 26 februarie 2020 09:08:33
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
#define DAU  ios::sync_with_stdio(false); fin.tie(0); fout.tie(0);
#define PLEC fin.close(); fout.close(); return 0;
using namespace std;
using VI  = vector<int>;
using VVI = vector<VI>;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, x, k, res;
VVI t;
int main()
{
    DAU
    fin >> n >> q;
    t = VVI(20, VI(n + 2));
    for (int i = 1; i <= n; ++i)
        fin >> t[0][i];
    for (int p = 18; p; --p)
        for (int i = 1; i <= n; ++i)
            t[p][i] = t[p-1][t[p-1][i]];
    while (q--)
    {
        fin >> x >> k;
        res = x;
        for (int p = 18; p >= 0 && k; --p)
            if ((1 << p) <= k)
            {
                k -= (1 << p);
                res = t[p][res];
            }
        fout << res << '\n';
    }
    PLEC
}