Cod sursa(job #898263)

Utilizator lehman97Dimulescu David lehman97 Data 28 februarie 2013 09:39:05
Problema Cele mai apropiate puncte din plan Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>

using namespace std;

FILE *f=fopen("cmap.in","r");
FILE *g=fopen("cmap.out","w");



struct vec
{
    int x,y;
}v[100001];

int i,n,j;
bool ok;
double mn;

bool cmp(vec i,vec j)
{
    if(i.x<j.x)return 1; else
    if(i.x==j.x && i.y<j.y)return 1; else
    return 0;
}

double dist(vec i, vec j)
{
     return sqrt(1ll*(i.x-j.x)*(i.x-j.x) + 1ll*(i.y-j.y)*(i.y-j.y));
}


int main()
{
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
     fscanf(f,"%d%d",&v[i].x,&v[i].y);
    sort(v+1,v+n+1,cmp);
    /*for(i=1;i<=n;i++)
    fprintf(g,"%d %d\n",v[i].x,v[i].y);
    */
    ok=0;
    for(i=1;i<=n;i++)
    for(j=i+1;j<=i+7;j++)
    {
        if(!ok){mn=dist(v[i],v[j]);ok=1;}
        else
        if(dist(v[i],v[j])<mn)mn=dist(v[i],v[j]);
    }

    fprintf(g,"%.6lf",mn);
    fclose(g);
    return 0;
}