Cod sursa(job #2965045)

Utilizator AswVwsACamburu Luca AswVwsA Data 14 ianuarie 2023 12:09:13
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <queue>
#include <algorithm>
#include <climits>
using namespace std;

const int NMAX = 250000;
const int LGMAX = 17;
int dp[NMAX + 1][LGMAX + 1];
int lg[NMAX + 2];
int main()
{
    ifstream cin("stramosi.in");
    ofstream cout("stramosi.out");
    int n, m, i, j;
    cin >> n >> m;
    for (i = 1; i <= n; i++)
    {
        cin >> dp[i][0];
        lg[i + 1] = lg[(i + 1) / 2] + 1;
    }
    for (i = 1; i <= lg[n]; i++)
        for (j = 1; j <= n; j++)
            dp[j][i] = dp[dp[j][i - 1]][i - 1];
    while (m--)
    {
        int p, q;
        cin >> q >> p;
        int ans = q;
        for (int i = 0; (1 << i) <= p; i++)
            if (p & (1 << i))
                ans = dp[ans][i];
        cout << ans << "\n";
    }
}