Cod sursa(job #868271)

Utilizator mihaiSimuSimu Mihai mihaiSimu Data 30 ianuarie 2013 21:09:51
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>
int log2[250001],str[19][250002],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[0][i]);
	}
	for(int i=2;i<=n;i++)
		log2[i]=log2[i/2]+1;
	for(int lev=1;lev<19;lev++){
		for(int i=1;i<=n;i++)
			str[lev][i]=str[lev-1][str[lev-1][i]];
	}
	
	
	int p,q;
	for(int i=0;i<m;i++){
		scanf("%d %d",&q,&p);
		while(p!=0 && q!=0){
			q=str[log2[p]][q];
			p-=(1<<log2[p]);
		}
		printf("%d\n",q);
	}
	
	return 0;
}