Cod sursa(job #1779332)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 15 octombrie 2016 09:34:33
Problema Stramosi Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#define MAX 250005

int n, m, x, y, p[19][MAX];

int ans(int x, int y){
    int res = x, nr = 0;
    while(y){
        if(y & 1)
            res = p[nr][res];
        y >>= 1;
        ++nr;
    }
    return res;
}

int main(){
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i)
        scanf("%d", &p[0][i]);

    for(int i = 1; (1<<i) <= n; ++i)
        for(int j = 1; j <= n; ++j)
            p[i][j] = p[i - 1][p[i - 1][j]];

    for(int i = 0; i < m; ++i){
        scanf("%d%d", &x, &y);
        printf("%d\n", ans(x, y));
    }
    return 0;
}