Cod sursa(job #3207593)

Utilizator Nasa1004Ema Nicole Gheorghe Nasa1004 Data 26 februarie 2024 15:51:15
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 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;
}