Cod sursa(job #1367275)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 1 martie 2015 19:06:38
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
int n,m;
int dp[250001][19];
int p2[31];
int main()
{
    freopen ("stramosi.in","r",stdin);
    freopen ("stramosi.out","w",stdout);
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&dp[i][0]);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=18;j++)
        {
            dp[i][j]=dp[dp[i][j-1]][j-1];
        }
    }
    p2[0]=1;
    for(int i=1;i<=19;i++) p2[i]=(1<<i);
    int x,y;
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        for(int j=19;j>=0;j--)
        {
            if(y>=p2[j])
            {
                x=dp[x][j];
                y-=p2[j];
            }
        }
        //printf("\n");
        printf("%d\n",x);
    }
}