Cod sursa(job #992048)

Utilizator gbi250Gabriela Moldovan gbi250 Data 1 septembrie 2013 00:17:04
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
#define dim 250010

using namespace std;

int n, m, i, j, p, q, k, d[20][dim];

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

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

    for(i=1; i<=20; ++i)
        for(j=1; j<=n; ++j)
            d[i][j]=d[i-1][d[i-1][j]];
    for(i=1; i<=m; ++i)
    {
        scanf("%d %d", &q, &p);
        while(p)
        {
            k=1;
            while( (1<<k) <= p )
                ++k;
            --k;
            p-=1<<k;
            q=d[k][q];
        }
        printf("%d\n", q);
    }
    return 0;
}