Cod sursa(job #868245)

Utilizator mihaiSimuSimu Mihai mihaiSimu Data 30 ianuarie 2013 20:51:21
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <stdio.h>
int log2[250001],str[250002][20],n,m;

int main(){
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d %d",&n,&m);
	log2[1]=0;
	for(int i=1;i<=n;i++){
		scanf("%d",&str[i][1]);
		log2[i]=log2[i/2]+1;
	}
	
	for(int lev=2;lev<20;lev++){
		for(int i=1;i<=n;i++)
			str[i][lev]=str[str[i][lev-1]][lev-1];
	}
	
	
	int p,q;
	for(int i=0;i<m;i++){
		scanf("%d %d",&q,&p);
		while(p!=0 && q!=0){
			q=str[q][log2[p]];
			p-=log2[p];
		}
		printf("%d\n",q);
	}
	
	return 0;
}