Cod sursa(job #812899)

Utilizator andreea29Iorga Andreea andreea29 Data 14 noiembrie 2012 17:44:12
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<fstream>
#define N 18
#define Nmax 250010
using namespace std;
int n, m, i, k, a[Nmax][N+1], nr, y, x, p, q;
int main()
{
	ifstream f("stramosi.in");
	ofstream h("stramosi.out");
	f >> n >> m;
	for (i = 1; i <= n; ++i)
	{
		f >> a[i][0];
	}
	for (i = 1; i <= n; ++i)
		for (k = 1; k <= N; ++k)
			a[i][k] = a[a[i][k-1]][k-1];
	for (i = 1; i <= m; ++i)
	{
		f >> p >> q;
		while (q)
		{
			nr = 1;
			y = 0;
			while ((2 * nr) <= q && y < N - 1)
			{
				nr = nr * 2;
				y++;
			}
			x = a[p][y] ; p = x;
			q = q - nr;
		}
		h << x << '\n'; 
	}
  return 0;
}