Cod sursa(job #2312818)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 5 ianuarie 2019 15:58:23
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 3e5 + 7;

int ancestor[30][DIM];

int main()
{
	int n, m;
	in >> n >> m;
	
	for(int i = 1; i <= n; i++)
	{
		in >> ancestor[0][i];
	}
	
	for(int i = 1; (1 << i) <= n; i++)
		for(int j = 1; j <= n; j++)
			ancestor[i][j] = ancestor[i - 1][ancestor[i - 1][j]];
	
	while(m--)
	{
		int p, q;
		in >> q >> p;
		
		for(int i = 0; (1 << i) <= n && q != 0; i++)
			if(p & (1 << i))
				q = ancestor[i][q];
		
		out << q << '\n';
	}
}