Cod sursa(job #469789)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 8 iulie 2010 23:32:51
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <iostream>
#include <fstream>

using namespace std;

const char iname[] = "stramosi.in";
const char oname[] = "stramosi.out";

ifstream fin(iname);
ofstream fout(oname);

int N, M, dp[22][250005], i, j, k, P, Q;

int main()
{
	fin >> N >> M;
	for(i = 1; i <= N; i ++)
		fin >> dp[0][i];
	for(i = 1; i <= 20; i ++)
		for(j = 1; j <= N; j ++)
			dp[i][j] = dp[i - 1][dp[i - 1][j]];
	for(i = 1; i <= M; i ++)
	{	
		fin >> P >> Q;
		for(j = 20; j >= 0; j --)
		{
			if(1 << j <= Q)
			{
				P = dp[j][P];
				Q -= 1 << j;
			}
		}
		fout << P << "\n";
	}
	return 0;
}