Cod sursa(job #3227278)

Utilizator dariadragomir23Dragomir Daria dariadragomir23 Data 29 aprilie 2024 10:56:22
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>

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

int tata[250005], str[250005][20], lg[250005], put[20];

int main() {
    int n, m, i,j;
    fin >> n >> m;
    put[0] = 1;
    for (i = 1; i < 20; i++) {
        put[i] = put[i-1] * 2;
    }
    for (i = 2; i <= n; i++) {
        lg[i] = lg[i/2] + 1;
        fin>>tata[i];
        str[i][0] = tata[i];
    }
    for (j = 1; j < 20; j++)
        for (i = 1; i <= n; i++)
            str[i][j] = str[str[i][j-1]][j-1];
    while (m--) {
        int q, p;
        fin >> q >> p;
        while (p) {
            q = str[q][lg[p]];
            p = p - put[lg[p]];
        }
        fout<<q<<'\n';
    }
    return 0;
}