Cod sursa(job #1104045)

Utilizator classiusCobuz Andrei classius Data 10 februarie 2014 12:51:35
Problema Stramosi Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>

using namespace std;

const int MAXN=250100;
int a[MAXN][20];

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

    int n,m;
    scanf("%d%d",&n,&m);

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

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

    for(int i=1;i<=m;i++){
        int x,ds;
        scanf("%d%d",&x,&ds);

        ds*=2;
        for(int j=0;j<20 && ds; j++){
            ds/=2;
            if(ds&1){
                x=a[x][j];
            }
        }

        printf("%d\n",x);
    }

    return 0;
}