Cod sursa(job #2210068)

Utilizator stefanchistefan chiper stefanchi Data 5 iunie 2018 16:11:11
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int N, M, P, Q;
int T[20][250001];

int main()
{
    f >> N >> M;
    for(int i = 1; i <= N; i++)
        f >> T[0][i];
    int maxm = (int)log2(N);
    for(int i = 1; i <= maxm; i++)
        for(int j = 1; j <= N; j++)
            T[i][j] = T[i - 1][T[i - 1][j]];
    for(int i = 1; i <= M; i++)
    {
        f >> Q >> P;
        int poz = maxm;
        while(P)
        {
            if(P & (1 << poz))
            {
                Q = T[poz][Q];
                P -= (1 << poz);
            }
            poz--;
        }
        g << Q << '\n';
    }
    return 0;
}