Pagini recente » Cod sursa (job #80940) | Cod sursa (job #144289) | Cod sursa (job #2256892) | Cod sursa (job #2559624) | Cod sursa (job #1776849)
#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 & 1 )
{
element = dpMatrix[row][element];
}
}
out<< element<< "\n";
}
out.close();
in.close();
return 0;
}