Cod sursa(job #3231718)

Utilizator bravo_tiramisutiramisu bravo_tiramisu Data 27 mai 2024 16:50:56
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

#define DMAX 250003
int D[19][DMAX], l2[DMAX];

int main () {

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

    int n, m, i, j, x, y;
    fin >> n >> m;

    for (int i = 1; i <= n; ++i) 
    {
        fin >> D[0][i];
        l2[i + 1] = l2[(i + 1) / 2] + 1;
    }

    for (int i = 1; (1 << i) <= n; ++i)
    {
        for (int j = 1; j <= n; ++j)
        {
            D[i][j] = D[i - 1][D[i - 1][j]];
        }
    }

    while (m > 0) 
    {
   
        fin >> x >> y;
        while (y > 0) 
        {
            x = D[l2[y]][x];
            y = y - (1 << l2[y]);
        }
        fout << x << "\n";
        m--;
    }

    fin.close();
    fout.close();
    return 0;
}