Cod sursa(job #781369)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 24 august 2012 12:29:13
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<iostream>
#include<fstream>
using namespace std;
const int LMAX = 18;
int a[LMAX+1][250001],lg[250001];
int stramos(int q, int p)
{
	if((p&(p-1))==0) 
		return a[lg[p]][q];
	return stramos(a[lg[p]][q],p-(1<<lg[p]));
}
int main ()
{
	int p,q,i,n,m,j;
	ifstream f("stramosi.in");
	ofstream g("stramosi.out");
	f>>n>>m;
	for(i=1;i<=n;i++)
		f>>a[0][i];
	lg[1]=0;
	for(i=2;i<=n;i++)
		lg[i]=lg[i/2]+1;
	for(i=1;(1<<i)<=n;i++)
		for(j=1;j<=n;j++)
			a[i][j]=a[i/2][a[i/2][j]];
	for(i=1;i<=m;i++) {
		f>>q>>p;
		g<<stramos(q,p)<<'\n';
	}
	f.close();
	g.close();	
	return 0;
}