Cod sursa(job #906376)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 6 martie 2013 19:52:55
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#define nmax 250010
using namespace std;
int v[25][nmax],n,m,i,j,niv,a,b;
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", &v[0][i]);
    for(i=1,niv=2;niv<=n;niv<<=1,++i)
        for(j=1;j<=n;j++)
            v[i][j]=v[i-1][v[i-1][j]];
    for(;m;--m)
    {
        scanf("%d%d", &a, &b);
        while(a!=0&&b!=0)
        {
            i=0;niv=1;
            while(niv<=b){niv<<=1;++i;}
            niv>>=1;
            --i;
            b-=niv;
            a=v[i][a];
        }
        printf("%d\n", a);
    }

    return 0;
}