Cod sursa(job #712205)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 13 martie 2012 09:58:36
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#include <vector>
#define MAXN 250010
using namespace std;
int Log[MAXN],n,m,a[20][MAXN],i,j;
int query(int q,int p)
{
	if(p==0) return q;
	if(q==0) return 0;
	q=a[Log[p]][q];
	p-=(1<<(Log[p]));
	return query(q,p);
}
int main()
{
	int p,q;
	ifstream fi("stramosi.in");
	ofstream fo("stramosi.out");
	fi>>n>>m;
	for(i=1;i<=n;i++) fi>>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]];
	for(i=2;i<=n;i++) Log[i]=Log[i/2]+1;
	for(i=1;i<=m;i++)
	{
		fi>>q>>p;
		if(p>n) fo<<"0\n"; else
		fo<<query(q,p)<<"\n";
	}
	return 0;
}