Cod sursa(job #1725112)

Utilizator valentin50517Vozian Valentin valentin50517 Data 4 iulie 2016 21:19:37
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
	
int A[18][250100],L[250100];
int N,M;
int main(){
	ios_base::sync_with_stdio(0);
	fin.tie(0);
	fin >> N >> M;
	for(int p = 2;p<=N;p*=2) L[p] = 1;
	for(int i = 3;i<=N;i++) L[i] += L[i-1];
	for(int i = 1;i<=N;i++) fin >> A[0][i];
	for(int k = 1;k<=L[N];k++)
		for(int i = 1;i<=N;i++)
			A[k][i] = A[k-1][A[k-1][i]];
	
	for(int x,y;M--;){
		fin >> x >> y;
		int rs = x;
		while(y){
			rs = A[L[y]][rs];
			y -= (1<<L[y]);
		}
		fout << rs<<'\n';
	}
	
    return 0;
}