Cod sursa(job #2072203)

Utilizator eragon0502Dumitrescu Dragos eragon0502 Data 21 noiembrie 2017 16:07:11
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <vector>

using namespace std;

int a[30][250005],st=0,dr=0;

int main()
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    int n,m,x,y;

    scanf("%d%d",&n,&m);

    for(int i=1;i<=n;++i)
    {
        scanf("%d",&x);
        a[0][i]=x;
    }

    for(int j=1;j<=21;++j)
    {
        for(int i=1;i<=n;++i)
        {
            a[i][j]=a[i-1][a[i-1][j]];
        }
    }

    for(int i=1;i<=m;++i)
    {
        scanf("%d %d",&x,&y);
        while(y>0)
        {
            int M=1<<28;
            int k=0;
            while((M&y)==0)
            {
                ++k;
                M>>=1;
                if(M==0)
                    break;
            }
            x=a[28-k][x];
            y-=M;
        }
        printf("%d\n",x);
    }

    return 0;
}