Pagini recente » Cod sursa (job #1256759) | Cod sursa (job #1762795) | Cod sursa (job #304372) | Cod sursa (job #853491) | Cod sursa (job #1776848)
#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;
}