Cod sursa(job #1867465)

Utilizator UMihneaUngureanu Mihnea UMihnea Data 4 februarie 2017 09:46:12
Problema Stramosi Scor 100
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[18][250010];

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[0][i]);//f >> S[i][0];
    for(i = 1; i <= m; i++)
        for(j = 1; j <= n; j++)
            S[i][j] = S[i-1][S[i-1][j]];
    for(;q;q--)
    {
        scanf("%d%d",&j,&i);//ff>>j>>i;
        while(i)
        {
            k = __builtin_ctz(i);
            j = S[k][j];
            i -= 1<<k;
        }
        printf("%d\n",j);//g << j << '\n';
    }
    return 0;
}