Cod sursa(job #1498008)

Utilizator CollermanAndrei Amariei Collerman Data 7 octombrie 2015 21:19:44
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
using namespace std;

const int NMAX = 250005;

int n, m, x, y;
int ST[19][NMAX];

int main()
{
    freopen("stramosi.in", "r", stdin);
    scanf("%d%d", &n, &m);

    for(int i=1; i<=n; ++i)
        scanf("%d", &ST[0][i]);

    int l = 0, p = 1;
    while (p <= n) {
        p *= 2;
        ++l;
    }
    --l;

    for(int j=1; j<=l; ++j)
        for(int i=1; i<=n; ++i)
            ST[j][i] = ST[j-1][ST[j-1][i]];
    freopen("stramosi.out", "w", stdout);

    for(int i=1; i<=m; ++i) {
        scanf("%d%d", &x, &y);
        for(int j=20; j>-1; --j)
            if(y & (1 << j))
                x = ST[j][x];
        printf("%d\n", x);
    }
    return 0;
}