Cod sursa(job #1574803)

Utilizator ionutpop118Pop Ioan Cristian ionutpop118 Data 20 ianuarie 2016 20:58:52
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
using namespace std;
const int NMAX = 250000;
const int LOGMAX = 18;
int tata [LOGMAX + 5][NMAX + 5];
int main()
{
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    int n, k, nod, l;
    scanf("%d %d", &n, &k);
    for (register int i = 1; i <= n; ++i)
        scanf("%d", &tata[0][i]);

    for (register int i = 1; i <= LOGMAX; ++i)
        for (register int j = 1; j <= n; ++j)
            tata[i][j] = tata[i - 1][tata[i - 1][j]];

    for (register int i = 1; i <= k; ++i)
    {
        scanf("%d %d", &nod, &l);
        for (register int j = 0; l > 0; ++j, l >>= 1)
            if ((l & 1) > 0)
                nod = tata[j][nod];
        printf("%d\n", nod);
    }

    return 0;
}