Pagini recente » Cod sursa (job #241636) | Cod sursa (job #3215631) | Cod sursa (job #2277277) | Cod sursa (job #2562166) | Cod sursa (job #1776825)
#include <iostream>
#include <fstream>
#include <vector>
#include <math.h>
using namespace std;
int main()
{
int numberOfElements;
int numberOfQueries;
ifstream in("stramosi.in");
in>> numberOfElements>> numberOfQueries;
vector<vector<int>> dpMatrix( log2(numberOfElements) + 1 , vector<int>(numberOfElements + 1));
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;
}