Cod sursa(job #3133837)

Utilizator sara_ionescu21Ionescu Sara sara_ionescu21 Data 27 mai 2023 01:35:51
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAX_N = 250100;
const int MAX_LOG = 20;

int N, M;
int v[MAX_N];
int a[MAX_LOG][MAX_N];

int qry(int p, int q)
{
    int x = p;
    for (int i = 1; i <= MAX_LOG; i++)
    {
        if (q & (1 << (i - 1)))
        {
            x = a[i][x];
        }
    }

    return x;
}

void gen()
{
    for (int i = 1; i <= N; i++)
        a[1][i] = v[i];

    for (int i = 2; (1 << (i - 1)) <= N; i++)
    {
        for (int j = 1; j <= N; j++)
        {
            a[i][j] = a[i - 1][a[i - 1][j]];
        }
    }
}

int main()
{
    fin >> N >> M;

    for (int i = 1; i <= N; i++)
        fin >> v[i];

    gen();

    for (int i = 1; i <= M; i++)
    {
        int p, q;
        fin >> p >> q;
        fout << qry(p, q) << '\n';
    }

    return 0;
}