Cod sursa(job #2024915)

Utilizator vladm98Munteanu Vlad vladm98 Data 21 septembrie 2017 16:08:34
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 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]];
			// dp[i][j] = dp[dp[i][j-1]][j-1];
}
int main(int argc, char const *argv[])
{
	ifstream fin ("stramosi.in");
	ofstream fout ("stramosi.out");
	// ifstream fin ("input");
	// ofstream fout ("output");
	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;
		for (int i = 19; i>=0; --i)
			if (count >= (1<<i))
			{
				count -= (1<<i);
				x = dp[i][x];
			}
		fout << x << '\n';
	}
	return 0;
}