Cod sursa(job #580800)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 13 aprilie 2011 15:28:20
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <fstream.h>
#define DIM 250003
ifstream f("stramosi.in");
ofstream g("stramosi.out");
long n,m,a[32][DIM];
long L[DIM];

void calc(){
	for(register int i=2;i<=n;i++){
		L[i]=L[i>>1]+1;
	}
}

int main(void){
	register int i,j;
	
	f>>n>>m;
	for(i=1;i<=n;i++)
		f>>a[0][i];
	
	calc();
	for(i=1;(1<<i)<=n;i++){
		for(j=1;j<=n;j++){
			a[i][j]=a[i-1][a[i-1][j]];
		}
	}
	
	int q,p;
	for(i=1;i<=m;i++){
		f>>q>>p;
		for(;p>0;p-=(1<<L[p])){
			q=a[L[p]][q];
		}
		g<<q<<"\n";
	}
	return 0;
}