Cod sursa(job #3207599)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 26 februarie 2024 16:01:43
Problema Stramosi Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int mos[250001];
int dp[20][250001];
int main()
{
    int n, m;
    in >> n >> m;
    for( int i = 1; i <= n; i++ ){
        in >> mos[i];
        dp[0][i] = mos[i];
    }
    for( int i = 1 ; (1 << i) <= n; i++ ){
		for( int j = 1; j <= n; j++){
			dp[i][j] = dp[i - 1][dp[i-1][j]];
		}
    }
    while( m-- ){
        int a, b;
        in >> a >> b;
        int p = 0;
        while( (1 << p) <= b )
            p++;
        p--;
        while( b > 0 ){
            a = dp[p][a];
            b -= (1 << p);
            while( (1 << p) <= b )
                p++;
            p--;
        }
        out << a << "\n" ;
    }
    return 0;
}