Cod sursa(job #180298)

Utilizator c_sebiSebastian Crisan c_sebi Data 16 aprilie 2008 20:56:26
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <stdio.h>
#define NMAX 250001

int a[NMAX][20], n, m;


int main(){

	FILE *g=fopen("stramosi.out", "w");
	FILE *f=fopen("stramosi.in", "r");
	fscanf(f, "%d %d", &n, &m);
	int i, j, p, nr, x;
	for(i=1; i<=n; i++)
		fscanf(f, "%d", &a[i][0]);
	for(i=1; i<=n; i++)
		for(j=1; j<=18; j++)
			a[i][j] = a[a[i][j-1]][j-1];
	for(i=1; i<=m; i++){
		fscanf(f, "%d %d", &p, &nr);
		x=nr; j=0;
		while(x) x>>=1, j++;
		j--;
		//j=19;
		while(nr){
			if(nr&(1<<j)){
				p=a[p][j];
				nr-=(1<<j);
			}
			j--;
		}
		fprintf(g, "%d\n", p);
	}
	return 0;
}