Cod sursa(job #194475)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 11 iunie 2008 08:48:43
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
#define N 250005
long n,m,s[N][18],a[N],p,q,l;
int main(){
	int i,j;
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%ld%ld",&n,&m);
	a[1]=0;
	scanf("%ld",&s[1][0]);
	for (i=2;i<=n;i++){
		a[i]=a[i/2]+1;
		scanf("%ld",&s[i][0]);
	}
	for(i=1;i<=n;i++)
		for(j=1;j<=a[n];j++){
			if(!s[s[i][j-1]][j-1])
				break;
			s[i][j]=s[s[i][j-1]][j-1];
		}
	for (i=0;i<m;i++){
		scanf("%ld %ld\n",&q,&p);
		while (p){
			l=s[q][a[p]];
			p-=(1<<a[p]);
			q=l;
		}
		printf("%ld\n",l);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}