Cod sursa(job #1537993)

Utilizator Andrei66Andrei Rusu Andrei66 Data 28 noiembrie 2015 12:59:51
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

#define x first
#define y second
#define VM 300005
#define pb push_back
#define ppb pop_back
#define ll long long
#define pii pair<int, int>

using namespace std;

//don't forget to put input in the file!!!
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n, m, f[20][VM];

int query(int p, int q){
	for(int i=0; (1<<i) <= p; ++i)
		if((1<<i) & p)
			q = f[i][q];
	return q;
}

int main(){
	fin>>n>>m;
	for(int a, i=1; i<=n; ++i){
		fin>>f[0][i];
	}

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

	for(int a, b, i=1; i<=m; ++i){
		fin>>a>>b;
		fout<<query(b, a)<<'\n';
	}
	
	return 0;
}