Cod sursa(job #346914)

Utilizator radu_cppRadu Voroneanu radu_cpp Data 10 septembrie 2009 08:33:02
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

int a[20][300000];
int nr,i,j,q,p,n,m;

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