Cod sursa(job #574291)

Utilizator mayhemx77Voinea C. Vladimir mayhemx77 Data 7 aprilie 2011 00:09:07
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <vector>
#define pb push_back

using namespace std;

const int nmax = 250250;
int N, M;
int T[30][nmax];
vector <int> G[nmax];

void read()
{
    ifstream in("stramosi.in");

    in >> N >> M;
    int i, k;
    for(i = 1; i <= N; i++)
    {
        in >> T[0][i];
        G[ T[0][i] ]. pb( i );
    }

    for(k = 1; (1 << k) <= N; k++)
        for(i = 1; i <= N; i++)
            T[k][i] = T[k - 1][ T[k - 1][i] ];

    int Q, P;
    ofstream out("stramosi.out");
    for(i = 1; i <= M; i++)
    {
        in>> Q >> P;

        k = 0;
        while(P)
        {
            if(P & 1)
                Q = T[k][Q];
            k++;
            P >>= 1;
        }

        out << Q << "\n";
    }
}
int main()
{
    read();
    return 0;
}