Cod sursa(job #1185812)

Utilizator sorin2kSorin Nutu sorin2k Data 16 mai 2014 23:10:45
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
#include<cmath>
using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int stramos[18][250001];
int n, m;

int main() {
	int i, j, aux, p, q;
	fin >> n >> m;
	for(i = 1; i <= n; i++) {
		fin >> stramos[0][i]; // citeste stramosul de rang 2^0
	}
	aux = (int)log2(n) + 1;
	for(i = 1; i < aux; i++) {
		for(j = 1; j <= n; j++) {
			stramos[i][j] = stramos[i-1][stramos[i-1][j]];
		}
	}
	for(i = 0; i < m; i++) {
		fin >> q >> p;
		j = -1;
		while(p) {
			j++;
			if(p & 1 == 1) {
				q = stramos[j][q];
			}
			p >>= 1;
		}
		fout << q << "\n";
	}
	return 0;
}