Cod sursa(job #303683)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 10 aprilie 2009 10:36:38
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>

long long a[30][300000];
long long nr,i,j,q,p,n,m;

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