Cod sursa(job #1160659)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 30 martie 2014 18:12:14
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#define DIM 250010
using namespace std;
int n, m, i, j, k, v[20][DIM], p[20], a[DIM], x, y;

void calculare_puteri(){
    p[0]=1;
    for(i=1; i<19; i++)
        p[i]=p[i-1]*2;
    for(i=2; i<=n; i++)
        a[i]=a[i/2]+1;
}

int main(){
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    scanf("%d %d", &n, &m);
    calculare_puteri();
    for(i=1; i<=n; i++)
        scanf("%d", &v[0][i]);
    for(i=1, k=2; j<=n; i++, k*=2)
        for(j=1; j<=n; j++)
            v[i][j]=v[i-1][ v[i-1][j] ];
    for(;m;m--)
    {
        scanf("%d %d", &x, &y);
        for(;y>0; y-=p[ a[y] ])
            x=v[ a[y] ][x];
        printf("%d\n", x);
    }
    return 0;
}