Cod sursa(job #178301)

Utilizator pandaemonAndrei Popescu pandaemon Data 14 aprilie 2008 13:15:10
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
#include<iostream.h>
#define NMAX 300000

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

long x, y, contor, raspuns;

long putere_2(long a)
{
 long b = 1;     contor=0;

 while( b < a) { b = (1<<b); contor++; }

 if(b==a) return a;
 else
 {contor--;
 return b/2; }

}


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; }