Cod sursa(job #3235847)

Utilizator Ionut2607Riciu Ionut Ionut2607 Data 22 iunie 2024 17:18:20
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <cmath>
#include <bitset>
#include <fstream>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int A[250001][17], N, M, B[250001];

int main()
{
    fin >> N >> M;
    int Log = (int) log2(N);
    for (int i = 1; i <= N; i++)
        fin >> B[i];
    for (int i = 1; i <= N; i++)
        A[i][0] = B[i];
    for (int j = 1; j <= Log; j++)
        for (int i = 1; i <= N; i++)
        A[i][j] = A[A[i][j - 1]][j - 1];
    /*for (int i = 1; i <= N; i++, cout << "\n")
        for (int j = 0; j <= Log; j++)
            cout << A[i][j] << " ";*/
    for (int i = 1; i <= M; i++)
    {
        int P, Q;
        fin >> Q >> P;
        bitset < 17 > BP(P);
        for (int j = 0; j < 17; j++)
            if (BP[j] == 1)
                Q = A[Q][j];
        fout << Q << "\n";
    }
    return 0;
}