Cod sursa(job #1080985)

Utilizator impulseBagu Alexandru impulse Data 13 ianuarie 2014 03:28:37
Problema Stramosi Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.82 kb
//
//  main.c
//  stramosi
//
//  Created by Alexandru Bâgu on 1/13/14.
//  Copyright (c) 2014 Alexandru Bâgu. All rights reserved.
//

#include <stdio.h>
#include <math.h>
#define MAX 250001
#define MAXL 18
int T[MAXL][MAX];

int main(int argc, const char * argv[])
{
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    int n, m;
    scanf("%d %d", &n, &m);
    int i, j, q, w, x = log2(n);
    for(i = 1; i <= n; i++)
    {
        scanf("%d", &q);
        T[0][i] = q;
    }
    for(i = 1; i <= x; i++)
        for(j = 1; j <= n; j++)
            T[i][j] = T[i-1][T[i-1][j]];
    for(i = 0; i < m; i++)
    {
        scanf("%d %d", &q, &w);
        w <<=1;
        for(j=0; j<= x && q; j++)
            if((w >>= 1) & 1)
                q=T[j][q];
        printf("%d\n", q);
    }
    return 0;
}