Cod sursa(job #2738984)

Utilizator grezdeCristian Ardeleanu grezde Data 6 aprilie 2021 17:26:38
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

const int MAXN = 250002;
int n, m, p, q;
int d[MAXN][20];
int pb[20];

int main()
{
    cin >> n >> m;
    for(int i=1; i<=n; i++) {
        cin >> d[i][0];
        for(int j=0; d[ d[i][j] ][j] > 0; j++)
            d[i][j+1] = d[ d[i][j] ][j];
    }
    for(int i=1; i<=m; i++) {
        cin >> q >> p;
        int cnt = 1, crn=q, j=1;
        while(p > 0) {
            if(p&1) {
                pb[cnt] = j-1;
                cnt++;
            }
            j++;
            p >>= 1;
        }
        cnt--;
        while(cnt > 0) {
            crn = d[crn][pb[cnt]];
            cnt--;
        }
        cout << crn << "\n";
    }
    return 0;
}