Cod sursa(job #1776848)

Utilizator enacheionutEnache Ionut enacheionut Data 11 octombrie 2016 20:49:01
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <math.h>

using namespace std;

int dpMatrix[(int)log2(250001) + 1][250001];

int main()
{
    int numberOfElements;
    int numberOfQueries;

    ifstream in("stramosi.in");
    in>> numberOfElements>> numberOfQueries;

    for( int i = 1; i <= numberOfElements; ++i )
    {
        in>> dpMatrix[0][i];
    }

    for( int i = 1; i <= log2(numberOfElements) ; ++i )
    {
        for( int j = 1; j <= numberOfElements; ++j )
        {
            dpMatrix[i][j] = dpMatrix[i - 1][dpMatrix[i - 1][j]];
        }
    }

    int element;
    int levelAncestor;

    ofstream out("stramosi.out");
    while( numberOfQueries-- )
    {
        in>> element>> levelAncestor;
        for( int row = 0; levelAncestor; ++row, levelAncestor >>= 1 )
        {
            if( levelAncestor % 2 )
            {
                element = dpMatrix[row][element];
            }
        }
        out<< element<< endl;
    }

    out.close();
    in.close();
    return 0;
}