Cod sursa(job #2397649)

Utilizator DenisacheDenis Ehorovici Denisache Data 4 aprilie 2019 17:37:03
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

int D[250005][18];

int main() {
    ios::sync_with_stdio(false);
    
    ifstream fin("stramosi.in");
    ofstream fout("stramosi.out");
    
    int n, q;
    fin >> n >> q;
    
    for (int i = 1; i <= n; ++i) {
        fin >> D[i][0];
    }
    
    for (int j = 1; j < 18; ++j) {
        for (int i = 1; i <= n; ++i) {
            D[i][j] = D[D[i][j-1]][j-1];
        }
    }
    
    while (q--) {
        int x, p;
        fin >> x >> p;
        
        for (int i = 0; (1<<i) <= p; ++i) {
			if ((1<<i) & p) {
				x = D[x][i];
				if (x == 0) break;
			}
		}
        
        fout << x << "\n";
    }
    
    return 0;
}