Cod sursa(job #75107)

Utilizator swift90Ionut Bogdanescu swift90 Data 30 iulie 2007 17:49:56
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<stdio.h>
int nr[250010][20];
int main(){
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	int n,m,i,j,q,p,x,aux,poz;
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++){
		scanf("%d",&nr[i][0]);
		for(j=1;j<19 && nr[i][j-1];j++)
			nr[i][j]=nr[nr[i][j-1]][j-1];
	}
	
	for(x=0;x<m;x++){
		scanf("%d %d",&q,&p);
		while((p)&&(q)){
			aux=p;
			poz=0;
			while(aux^1){
				poz++;
				aux>>=1;
			}
			q=nr[q][poz];
			j=1<<poz;
			p=p-j;
		}
		printf("%d\n",q);
	}
	
	return 0;
}