Cod sursa(job #1014212)

Utilizator impulseBagu Alexandru impulse Data 22 octombrie 2013 12:53:29
Problema Cele mai apropiate puncte din plan Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 1.12 kb
#include <stdio.h>
#include <math.h>
#include <memory.h>
#define MIN(a,b) ((a) > (b) ? (b) : (a))
#define MAX(a,b) ((a) < (b) ? (b) : (a))
#define ABS(a) ((a) < 0 ? -(a) : (a))


typedef struct
{
    int x, y;
} point;

double dist_float(point p, point p2)
{
    return sqrt((p.x - p2.x) * (p.x - p2.x) + (p.y - p2.y) * (p.y - p2.y));
}

int dist_int(point p, point p2)
{
    return MAX(ABS(p.x - p2.x), ABS(p.y - p2.y));
}

int main()
{
    FILE *fin = fopen("cmap.in", "r");
    FILE *fout = fopen("cmap.out", "w");

    int n;
    fscanf(fin, "%d", &n);

    point *p = malloc(sizeof(point) * n);
    memset(p, 0, sizeof(point) * n);
    int i, j;
    for(i = 0; i < n; i++)
        fscanf(fin, "%d%d", &p[i].x, &p[i].y);

    int mdst = 241700000, m, p1, p2;

    for(i = 0; i < n; i++)
    {
        for(j = i + 1; j < n; j++)
        {
            m = dist_int(p[i], p[j]);
            if(m < mdst)
            {
                mdst = m;
                p1 = i;
                p2 = j;
            }
        }
    }

    fprintf(fout, "%.6f\n", dist_float(p[p1], p[p2]));
    return 0;
}