Cod sursa(job #2024919)

Utilizator vladm98Munteanu Vlad vladm98 Data 21 septembrie 2017 16:21:21
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;

int dp[20][250001];

void Build_Dp(int n)
{
	for (int j = 1; j<=19; ++j)
		for (int i = 1; i<=n; ++i)
			dp[j][i] = dp[j-1][dp[j-1][i]];
}
void Query (int& x, int count)
{
	for (int i = 19; i>=0; --i)
		if (count >= (1<<i))			
		{
			count -= (1<<i);
			x = dp[i][x];
		}
}
int main(int argc, char const *argv[])
{
	ifstream fin ("stramosi.in");
	ofstream fout ("stramosi.out");
	int n, m;
	fin >> n >> m;
	for (int i = 1; i<=n; ++i)
		fin >> dp[0][i];
	Build_Dp(n);
	for (int i = 1; i<=m; ++i)
	{
		int x, count;
		fin >> x >> count;
		x = dp[i][x];
		Query(x, count);
		fout << x << '\n';
	}
	return 0;
}