Cod sursa(job #1725085)

Utilizator valentin50517Vozian Valentin valentin50517 Data 4 iulie 2016 21:02:04
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include<bits/stdc++.h>
using namespace std;

int A[17][250100];
int N,M;
int main(){
	ifstream cin("stramosi.in");
    ofstream cout("stramosi.out");
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cin >> N >> M;
	for(int i = 1;i<=N;i++) cin >> A[0][i];
	for(int k = 1;k<=log2(N);k++)
		for(int i = 1;i<=N;i++)
			if(A[k-1][A[k-1][i]]) A[k][i] = A[k-1][A[k-1][i]];

	for(int x,y;M--;){
		cin >> x >> y;
		int rs = x;
		while(y){
			int  k = log2(y);
			y -= (1<<k);
			rs = A[k][rs];
		}
		cout << rs<<'\n';
	}
	
    return 0;
}