Cod sursa(job #3321881)

Utilizator drsbosDarius Scripcaru drsbos Data 11 noiembrie 2025 16:25:52
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <stack>
#include <queue>
#include <cmath>
#include <algorithm>
#include <set>
#include <cstring>
#include <map>
#include <string>
#include <bitset>
#include <unordered_map>
#include <unordered_set>
#define oo 2000000000
#define MOD 123457
using namespace std;

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

int n, m, x,y;
int dp[19][250005];

int query(int q, int p)
{
    int x = q;
    int poz = 0;
    while (p)
    {
        if (p%2==1)
        {
            x = dp[poz][x];
        }
        poz++;
        p /= 2;
    }
    return x;

}

int main()
{
    fin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        fin >> dp[0][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]];
        }
    }
    for (int i = 1; i <= m; i++)
    {
        fin >> x >> y;
        fout << query(x, y)<<endl;
    }

}