Cod sursa(job #178311)

Utilizator pandaemonAndrei Popescu pandaemon Data 14 aprilie 2008 13:25:34
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
#include<iostream.h>
#define NMAX 260000

long n,m,i,j,p[21][NMAX];

long x, y, contor, raspuns;

long putere_2(long a)
{
 contor=0;

 while( (1<<contor) <= a) contor++;

 contor--;

 return (1<<contor);
}


main()
{
  freopen("stramosi.in", "r", stdin);
  freopen("stramosi.out", "w", stdout);

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

  for(j=1; j<=n; j++)  scanf("%ld", &p[0][j]);

  for(i=1; i<=19; i++)
  for(j=1; j<=n;  j++)

    p[i][j] = p[i-1][ p[i-1][j] ];

  for(i=1; i<=m; i++)
  {
    scanf("%ld %ld", &x, &y);  raspuns=x;

    while(y)
    {y-=putere_2(y);

     raspuns = p[contor][raspuns]; }


    printf("%ld\n" , raspuns );
  }


printf("\n"); return 0; }