Cod sursa(job #2227545)

Utilizator dahaandreiDaha Andrei Codrin dahaandrei Data 1 august 2018 00:25:07
Problema Stramosi Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("stramosi.in");
ofstream out("stramosi.out");

const int MAXN = 25e4;
const int MAXM = 3e5;
const int MAXPUT = 17;

int n, m, dp[MAXPUT][MAXN + 1];

int main() {
	in >> n >> m;

	for (int i = 1; i <= n; ++ i) in >> dp[0][i];
	int put = 0;
	int cop = n;
	while (cop) {
		++ put;
		cop >>= 1;
	}
	for (int i = 1; i <= put; ++ i)
		for (int j = 1; j <= n; ++ j)
			dp[i][j] = dp[i - 1][dp[i - 1][j]];

	int x, y;
	while (m --) {
		in >> y >> x;
		put = 0;
		while (x) {
			if (x & 1) y = dp[put][y];
			x >>= 1;
			++ put;
		}
		out << y << '\n';
	}

	return 0;
}