Cod sursa(job #894859)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 27 februarie 2013 00:27:51
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int s[20][250010],i,j,n,m,p[20],ip,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",&s[0][i]);
    p[0]=1;
    p[1]=2;
    for(i=1;p[i]<=n;i++,p[i]=p[i-1]<<1)
        for(j=1;j<=n;j++)
            s[i][j]=s[i-1][s[i-1][j]];
    ip=i;
    for(;m;--m)
    {
        scanf("%d%d",&b,&a);
        for(;a && b;)
        {
            i=lower_bound(p,p+ip+1,a)-p;
            if(p[i]!=a) i--;
            a-=p[i];
            b=s[i][b];
        }
        printf("%d\n",b);
    }
    return 0;
}