Cod sursa(job #330688)

Utilizator cezarbotolanbotolan cezar cezarbotolan Data 11 iulie 2009 11:29:36
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.87 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;   
}  
#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;
}