Cod sursa(job #27692)

Utilizator robbyRobertino robert robby Data 6 martie 2007 23:01:06
Problema Stramosi Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define nmax 250001
long a[nmax][21],b[nmax];
FILE *f,*g;
int main()
{
  long n,m,i,j,p,q,x,nr,y;
  f=fopen("stramosi.in","rt");
  g=fopen("stramosi.out","wt");
  fscanf(f,"%ld %ld\n",&n,&m);
  for (i=1;i<=n;i++)
	fscanf(f,"%ld",&b[i]);
  for (i=1;i<=n;i++)
	{
	  x=b[i];
	  y=1;
	  nr=1;
	  while (x&&a[i][0]<11)
		{
		  nr*=2;
		  a[i][++a[i][0]]=x;
		  while (y<nr&&x)
			{
			  y++;
			  x=b[x];
			}
		}
	}


  for (i=1;i<=m;i++)
	{
	  fscanf(f,"%ld %ld\n",&p,&q);
	  while (q)
		{
		  nr=1;
		  y=1;
		  while (2*nr<=q&&y<10)
			{nr*=2;y++;}
		  x=a[p][y];
		  p=x;
		  q-=nr;
		}
	  fprintf(g,"%ld\n",x);
	}
  fclose(f);
  fclose(g);
  return 0;
}