Cod sursa(job #992952)

Utilizator meehighStancu Mihai meehigh Data 2 septembrie 2013 21:21:22
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <fstream>

using namespace std;

#define MAXN 250001
#define MAXLOGN 18

int a[MAXN][MAXLOGN];

int main(){

	ifstream fin("stramosi.in");
	ofstream fout("stramosi.out");

	int n,m;
	fin >> n >> m;

	int t,p,q;

	for (int i=1;i<=n;i++){
		fin >> t;
		a[i][0] = t;
	}

	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++){
		fin >> q >> p;

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

		fout << q << endl;
	}

	fin.close();
	fout.close();
}