Cod sursa(job #1574557)

Utilizator krityxAdrian Buzea krityx Data 20 ianuarie 2016 17:51:58
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<fstream>
#include<cmath>
#define NMAX 250002
using namespace std;

int a[19][NMAX];
int main()
{
	ifstream f("stramosi.in");
	ofstream g("stramosi.out");
	int n, m, i, j, q, p;
	f >> n >> m;
	for (i = 1; i <= n; i++)
	{
		f >> a[0][i];
	}

	for (i = 1; (1<<i) <= n; i++)
	{
		for (j = 1; j <= n; j++)
		{
			a[i][j] = a[i - 1][a[i - 1][j]];
		}
	}
	while (f >> q >> p)
	{
		int l = log2(p), nod = q, dif = p - (1<<l);
		do
		{
			nod = a[l][nod];
			l --;
		} while (l > 0);
		if (dif)
		{
			g << a[(int)log2(dif)][nod] << "\n";
		}
		else
		{
			g << nod << "\n";
		}
	}


	f.close();
	g.close();
}