#include <stdio.h>

float raiz (float x) {
  float eps = 0.0001, rant, ratual;

  rant = x;
  ratual = (x + 1)/2;
  while (ratual - rant >= eps || ratual - rant <= -eps) {
    rant = ratual;
    ratual = (rant + x/rant)/2;
  }
  return ratual;
}

float dist (float x1, float y1, float x2, float y2) {
  return raiz((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
}

int main() {
  int n, i; 
  float x0, y0, x, y, xmin, ymin, d, dmin;

  printf("Digite as coordenadas da origem: ");
  scanf("%f%f", &x0, &y0);

  printf("Digite o número de pontos: "); 
  scanf("%d", &n); 

  printf("Digite as coordenadas de uma seqüência com %d pontos.\n", n); 
  scanf("%f%f", &xmin, &ymin);
  dmin = dist(x0, y0, xmin, ymin); 

  for (i=1; i<n; i++) {
    scanf("%f%f", &x, &y);
    d = dist(x0, y0, x, y); 
    if (d < dmin) {
      dmin = d; 
      xmin = x;
      ymin = y;
    }
  }

  printf("Um ponto a distância mínima de (%.2f,%.2f) é (%.2f,%.2f).\n", x0, y0, xmin, ymin);
  return 0;
}
