/*
  Versão preliminar de p19
 */ 

#include <stdio.h>
#include <stdlib.h>

int *leia_ints(int *N);
void *mallocc(size_t nbytes);
  
int main()
{
  int N, i, *v = leia_ints(&N);

  for (i = N - 1; i >= 0; i--)
    printf("%d ", v[i]);

  printf("\n");

  free(v);
  return 0;
}

int *leia_ints(int *N)
{
  int *v, t = 4, i = 0, x;

  v = mallocc(t * sizeof(int));

  while (scanf("%d", &x) > 0) {
    if (i > t - 1) {
      t *= 2;
      v = realloc(v, t * sizeof(int));
    }
    v[i++] = x;
  }

  *N = i;
  return v;
}

void *mallocc(size_t nbytes)
{
  void *ptr;
  ptr = malloc (nbytes);
  if (ptr == NULL) {
    printf ("Socorro! malloc devolveu NULL!\n");
    exit(EXIT_FAILURE); /* EXIT_FAILURE: definido pelo sistema */
  }
  return ptr;
}
