Cod sursa(job #894865)

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