Cod sursa(job #1909901)

Utilizator lauratalaatlaura talaat lauratalaat Data 7 martie 2017 14:35:33
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
int stramos[19][250001],n,m;
void construire(){
    int i,j;
    for(i=1;(1<<i)<=n;i++)
        for(j=1;j<=n;j++)
            stramos[i][j]=stramos[i-1][stramos[i-1][j]];
}
int answer ( int p , int q){
    int i;
    for(i=0;(1<<i)<=p;i++)
        if(((1<<i)&p)!=0)
            q=stramos[i][q];
    return q;
}
int main(){
    int i,ans,p,q;
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d%d",&n,&m);
    // stramos[i][j]= al 2^i-lea stramos a lui j
    for(i=1;i<=n;i++)
        scanf("%d",&stramos[0][i]);
    construire();
    for(i=1;i<=m;i++){
        scanf("%d%d",&q,&p);
        ans=answer(p,q);
        printf("%d\n",ans);
    }
    return 0;
}