Cod sursa(job #634617)

Utilizator sebii_cSebastian Claici sebii_c Data 16 noiembrie 2011 19:39:47
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>
using namespace std;

#define NMAX 250005
#define LgMax 19 

int A[20][NMAX];
int N;

void computeA()
{
    int i, j;
    for (i = 1; i <= LgMax; ++i)
	for (j = 1; j <= N; ++j)
	    A[i][j] = A[i-1][A[i-1][j]];
}

int find(int x, int k)
{
    for (int i = 0; i<=LgMax; ++i)
	if ((k >> i) & 1)
	    x = A[i][x];
    return x;
}
    
int main()
{
    ifstream fin("stramosi.in");
    ofstream fout("stramosi.out");
    int M, i, x, k;
    fin >> N >> M;
    for (i=1; i<=N; ++i) 
	fin >> A[0][i];
    
    computeA();
    for ( ; M>0; --M) {
	fin >> x >> k;
	fout << find(x, k) << "\n";
    }
 
    return 0;
}