Cod sursa(job #992957)

Utilizator meehighStancu Mihai meehigh Data 2 septembrie 2013 21:35:51
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#define _CRT_SECURE_NO_DEPRECATE
#include <fstream>

#define MAXN 250001
#define MAXLOGN 18

int a[MAXN][MAXLOGN];
int e[MAXLOGN];

int main(){

	FILE *fin, *fout;   
    fin = fopen("stramosi.in", "r");
    fout = fopen("stramosi.out", "w");

	int n,m;
	fscanf(fin, "%d %d", &n, &m);

	int p,q;

	for (int i=1;i<=n;i++){
		fscanf(fin, "%d", &a[i][0]);
	}

	for (int k=0;k<=MAXLOGN;k++)
		e[k]=1<<k;

	for (int j=1;j<MAXLOGN;j++)
		for (int i=1;i<=n;i++)
			a[i][j] = a[a[i][j-1]][j-1];

	for (int i=0;i<m;i++){
		fscanf(fin, "%d %d", &q, &p);

		for (int k=17;k>=0 && q>0;k--)
			if (p & e[k]) 
				q = a[q][k];

		fprintf(fout,"%d\n", q);
	}

	fclose(fin);
	fclose(fout);

	return 0;
}