Cod sursa(job #3198107)

Utilizator GoreaRaresGorea Rares-Andrei GoreaRares Data 28 ianuarie 2024 13:10:13
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[250001], stramosi[300001][21];

int main()
{
    ifstream cin("stramosi.in");
    ofstream cout("stramosi.out");
    int n, m, p, q, i, j, putere;
    cin >> n >> m;
    for(i = 1; i <= n; i++)
    {
        cin >> v[i];
        stramosi[i][0] = v[i];
    }
    for(i = 1; i < 20; i++)
    {
        for(j = 1; j <= n; j++)
        {
            stramosi[j][i] = stramosi[stramosi[j][i - 1]][i - 1];
        }
    }
    for(i = 1; i <= m; i++)
    {
        cin >> q >> p;
        putere = 0;
        while(p != 0)
        {
            if(p % 2 == 1)
            {
                q = stramosi[q][putere];
            }
            putere++;
            p >>= 1;
        }
        cout << q << "\n";
    }
    return 0;
}