Cod sursa(job #778855)

Utilizator Athena99Anghel Anca Athena99 Data 15 august 2012 23:53:41
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>

int a[20][250002];

int main()
{
    int n=0,m=0,i=0,j=0,p=0,q=0,pas=1;
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;++i)
    {
        scanf("%d",&a[1][i]);
        a[0][i]=i;
    }
    for(pas=0; (1<<pas)<n+1; ++pas);
    for(i=2; i<pas+1; ++i)
        for(j=1; j<n+1; ++j)
            a[i][j]=a[i-1][a[i-1][j]];
    for(i=0; i<m; ++i)
    {
        scanf("%d%d",&q,&p);
        pas=1;
        while (pas<p+1)
            pas=pas*(1<<pas);
        for(j=0; pas>-1; --pas)
            if(j+(1<<pas)<p+1)
            {
                q=a[pas+1][q];
                j=j+(1<<pas);
            }
        printf("%d\n",q);
    }
    return 0;
}