Cod sursa(job #96396)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 1 noiembrie 2007 12:48:24
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<string.h>

long n, m, p, q, nr;

typedef struct
{
  int a, b;
} vect;
vect v[300024];

long long cautare(int a, int b)
{
  long long i, rez=b;
  while (a>=2)
    {
      rez=v[rez].b;
      if (rez==0) return 0;
      a-=2;
    }
  if (a) rez=v[rez].a;
  return rez;
}



int main()
{
  long i, rez;
  freopen("stramosi.in","r",stdin);
  freopen("stramosi.out","w",stdout);
  scanf("%ld%ld",&n,&m);

  long aux;
  char sir[2500024];
  fgetc(stdin); fgetc(stdin);
  fgets(sir, 2500024,stdin);
  aux=strlen(sir);
  nr=1;
  for (i=0; i<aux; i++)
    {
      if (sir[i]>='0' && sir[i]<='9')
	v[nr].a=v[nr].a*10+sir[i]-'0';

      if (sir[i]==' ') nr++;
    }
  for (i=1; i<=nr; i++)
    v[i].b=v[v[i].a].a;


  for (i=1; i<=m; i++)
    {
      scanf("%ld%ld",&q,&p);
      rez=cautare(p,q);
      printf("%ld\n",rez);
    }

  return 0;
}