Cod sursa(job #337358)

Utilizator Cata99Putan Catalin Cata99 Data 3 august 2009 14:53:50
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>   
  
#define NMAX 250001   
  
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;   
}