Cod sursa(job #2658478)

Utilizator DordeDorde Matei Dorde Data 14 octombrie 2020 02:20:54
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;
ifstream f ("stramosi.in");
ofstream g ("stramosi.out");
int const N = 250001;
int v [N][18];
int log2 (int x){
    int ans = 0;
    while ((1 << ans) < x)
        ++ ans;
    return ans;
}
int main()
{
    int n , m;
    f >> n >> m;
    for(int i = 1 ; i <= n ; ++ i)
        f >> v [i][0];
    for(int i = 1 ; (1 << i) <= n ; ++ i)
        for(int j = (1 << i) + 1 ; j <= n ; ++ j)
            v [j][i] = v [v [j][i - 1]][i - 1];
    while (m --){
        int p , q , cur;
        f >> p >> q;
        cur = p;
        for(int i = log2 (p) ; i >= 0 ; -- i)
            if ((1 << i) & q)
                cur = v [cur][i];
        g << cur << '\n';
    }
    return 0;
}