Cod sursa(job #1117638)

Utilizator AcuasPopescu Nicolae-Aurelian Acuas Data 23 februarie 2014 18:18:49
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
using namespace std;

#include<cstdio>
#include<cmath>

const int MAXN=250100;

int a[18][MAXN];

int main(){
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);

    int n,m,lg,x,ds;
    scanf("%d%d",&n,&m);
    lg=log2(n);

    for(int i=1;i<=n;i++){
        scanf("%d",&a[0][i]);
    }

    for(int j=1;j<=lg;j++){
        for(int i=1;i<=n;i++){
            a[j][i]=a[j-1][a[j-1][i]];
        }
    }

    for(int i=1;i<=m;i++){
        scanf("%d%d",&x,&ds);
        for(int j=0;j<=lg && x;j++){
            if(ds & 1){
                x=a[j][x];
            }
            ds>>=1;
        }
        printf("%d\n",x);
    }

    return 0;
}