Cod sursa(job #219931)

Utilizator rastbananaPanait-Ardelean Alice rastbanana Data 8 noiembrie 2008 21:44:59
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>

using namespace std;

int v[19][250005];
int n, m, i, j, p, q, t;

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", &v[0][i]);
     
    for (i = 1; i <= 18; i++)
        for (j = 1; j <= n; j++)
            v[i][j] = v[i-1][v[i-1][j]];
    
    for (i = 1; i <= m; i++) {
        scanf("%d %d ", &q, &p);
        while (p && q) {
              t = 0;
              while (1 << (t + 1) < p) 
                t++;
              q = v[t][q];
              p -= 1<<t;
        }
        printf("%d\n",q);
    }
    
    return 0;
}