Cod sursa(job #1125112)

Utilizator alexclpAlexandru Clapa alexclp Data 26 februarie 2014 15:45:31
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

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

int v[19][1<<19];
int membri, intrebari;

void read()
{
    in >> membri >> intrebari;

    for (int i = 1; i <= membri; ++i) {
        in >> v[0][i];
    }
}

void solve()
{
    for (int i = 1; 1 << i <= membri; ++i) {
        for (int j = 1; j <= membri; ++j) {
            v[i][j] = v[i-1][v[i-1][j]];
        }
    }
}

int query (int q, int p)
{
    int ans = q;

    for (int i = 0; 1 << i <= p; ++i) {
        if ((1 << i) & p) {
            ans = v[i][ans];
        }
    }
    return ans;
}

int main()
{
    read();
    solve();

    int q, p;

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

        out << query(q, p) << "\n";
    }

    return 0;
}