#include <stdio.h>
#include <math.h>

#include "genlib.h"
#include "simpio.h"

#define NMAX 100

void leia_entrada(double *x, double *y, int *n, double xx[], double yy[]);

double distE(double x0, double y0, double x1, double y1);

void imprima_raios_distintos(double x, double y,
			     int n, double xx[], double yy[]);

int main() /* para devolver um inteiro ao sistema operacional */
{
  double x, y;
  int n;
  double xx[NMAX], yy[NMAX];

  leia_entrada(&x, &y, &n, xx, yy);
  imprima_raios_distintos(x, y, n, xx, yy);
  
  return 0; /* para indicar saida normal */
}

void leia_entrada(double *x, double *y, int *n, double xx[], double yy[])
{
  int i;
  
  printf("x = ");
  *x=GetReal();
  printf("y = ");
  *y=GetReal();

  printf("n = ");
  *n=GetInteger();
 
  for (i=0; i<*n; i++) {
    printf("xx[%d] = ", i);
    xx[i]=GetReal();

    printf("yy[%d] = ", i);
    yy[i]=GetReal();
  }
}

double distE(double x0, double y0, double x1, double y1)
{
  return sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1));
}

void imprima_raios_distintos(double x, double y,
			     int n, double xx[], double yy[])
{
  int i, j, n_dist;
  double r;
  double dist[NMAX];

  for (i=0; i<n; i++) dist[i]=0.0;
  n_dist=0;

  for (i=0; i<n; i++) {
    r=distE(x, y, xx[i], yy[i]);
    dist[i]=r;
    for (j=0; j<=i; j++)
      if (r==dist[j]) break;
    if (j<i) dist[i]=0.0;
    else n_dist++;
  }

  for (i=0; i<n_dist; i++)
    printf("%g\n", dist[i]);
}

