Cod sursa(job #292374)

Utilizator lexu93Todor Alex lexu93 Data 31 martie 2009 08:41:03
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>      
int a[18][250005];      
     
     
     
int calcul(int p, int q)      
{      
    int i=0;      
    while(p!=0)      
    {      
        if(p%2)      
        {      
            q=a[i][q];      
        }      
        ++i;      
        p/=2;      
    }      
    return q;      
}      
     
void citire()      
{      
    int i,j,p,q,n,m;      
    freopen("stramosi.in","r",stdin);      
    scanf("%d %d\n",&n,&m);      
    for(i=1;i<=n;++i)      
        scanf("%d ",&a[0][i]);      
    for(i=1;i<18;++i)      
        for(j=1;j<=n;++j)      
            a[i][j]=a[i-1][a[i-1][j]];      
    freopen("stramosi.out","w",stdout);      
    for(i=1;i<=m;++i)      
    {      
        scanf("%d %d\n", &q,&p);      
        printf("%d\n",calcul(p,q));      
    }      
}      
     
int main()      
{      
    citire();      
    return 0;      
}