Cod sursa(job #3207596)

Utilizator Nasa1004Ema Nicole Gheorghe Nasa1004 Data 26 februarie 2024 15:56:56
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;
const int NMAX = 250000;
const int LOG = 20;

ifstream cin("stramosi.in");
ofstream cout("stramosi.out");

int up[NMAX + 2][LOG + 2];
int query(int a, int p) {
    for(int j = LOG - 1; j >= 0; j--) {
        if(p & (1 << j))
            a = up[a][j];
    }
    return a;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, q;
    cin >> n >> q;
    for(int i = 1; i <= n; i++)
        cin >> up[i][0];

    for(int i = 1; i <= n; i++)
        for(int j = 1; j < LOG; j++)
            up[i][j] = up[up[i][j - 1]][j - 1];

    while(q--) {
        int a, p;
        cin >> a >> p;
        cout << query(a, p) << '\n';
    }

    return 0;
}