Cod sursa(job #1154532)

Utilizator Tudordmdaniel marin Tudordm Data 26 martie 2014 11:20:36
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>

const int LOG=20,MAX_N=250000;
int t[LOG+1][MAX_N];
int n,m;

int querry(int p,int q){
    int pas=1<<LOG,putere=LOG;
    while(pas>0){
        if(pas<=p){
            p-=pas;
            q=t[putere][q];
        }
        pas/=2;
        putere--;
    }
    return q;
}


int main(){


    int i,j,p,q;
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        scanf("%d",&t[0][i]);

    for(i=1;1<<i<=n;i++)
        for(j=1;j<=n;j++)
            t[i][j]=t[i-1][t[i-1][j]];

    while(m>0){
        m--;
        scanf("%d%d",&q,&p);
        printf("%d\n",querry(p,q));
    }

    return 0;

}