Cod sursa(job #1210969)

Utilizator lacraruraduRadu Matei Lacraru lacraruradu Data 21 iulie 2014 18:32:30
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

ifstream in("stramosi.in");
ofstream out("stramosi.out");

const int nmax = 250001 , lognmax = 18;

int n , m , nr , d[lognmax][nmax];

int main()
{
    int i , j , q , p , k;

    in >> n >> m;

    nr = 0;
    for(i = 1 ; i <= n ; i++)
    {
        in >> q;

        d[0][i] = q;
    }

    for(i = 1 ; i < lognmax ; i++)
        for(j = 1 ; j <= n ; j++)
            d[i][j] = d[i - 1][d[i - 1][j]];

    for(i = 1 ; i <= m ; i++)
    {
        in >> q >> p;

        k = 0;
        while(p != 0)
        {
            if(p & 1)
                q = d[k][q];
            p >>= 1;
            k++;
        }

        out << q << '\n';
    }
    return 0;
}