Cod sursa(job #337138)

Utilizator mlazariLazari Mihai mlazari Data 2 august 2009 17:56:20
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include<stdio.h>

#define NMAX 25001

int n,m,i,j,p,q,r;
int str[18][NMAX];

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",&str[0][i]);
  for(j=1;(1<<j)<=n;j++)
   for(i=1;i<=n;i++)
    str[j][i]=str[j-1][str[j-1][i]];
  while(m--) {
    scanf("%d %d",&q,&p);
    r=q;
    while(p&&r) {
      for(i=0;(1<<i)<=p;i++);
      r=str[--i][r];
      p-=1<<i;
    }
    printf("%d\n",r);
  }
  return 0;
}