Cod sursa(job #1867463)

Utilizator UMihneaUngureanu Mihnea UMihnea Data 4 februarie 2017 09:42:44
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;


int m, n, q, i, j, k, S[250010][18];

int main()
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d%d",&n,&q);//f >> n >> q;
    m = 31-__builtin_clz(n);
    for(i = 1; i <= n; i++)
        scanf("%d",&S[i][0]);//f >> S[i][0];
    for(i = 1; i <= m; i++)
        for(j = 1; j <= n; j++)
            S[j][i] = S[S[j][i-1]][i-1];
    for(;q;q--)
    {
        scanf("%d%d",&j,&i);//ff>>j>>i;
        while(i)
        {
            k = __builtin_ctz(i);
            j = S[j][k];
            i -= 1<<k;
        }
        printf("%d\n",j);//g << j << '\n';
    }
    return 0;
}