Cod sursa(job #1438903)

Utilizator eneandradaEne Oana-Andrada eneandrada Data 21 mai 2015 02:48:00
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[19][250005]; //v[i][j] = al 2^i-lea stramos al lui j

int str(int q, int p)
{
    for(int i = 20; i > -1; --i)
        if(p & (1 << i))
            q = v[i][q];
    return q;
}

int main()
{
    ifstream f("stramosi.in");
    ofstream g("stramosi.out");

    int N, M, Q, P, i;

    f >> N >> M;
    for(i = 1; i <= N; ++i)
        f >> v[0][i];
    int p = 0, put = 1;
    while (put <= N)
    {
    	put = put * 2;
    	++ p;
    }
    --p;
    for(int j = 1; j <= p; ++j)
        for(i = 1; i <= N; ++i)
            v[j][i] = v[j-1][v[j-1][i]];
    for(i = 0; i < M; ++i)
    {
        f >> Q >> P;
        g << str(Q,P) << endl;
    }

    return 0;
}