Cod sursa(job #674285)

Utilizator lily3Moldovan Liliana lily3 Data 5 februarie 2012 22:58:33
Problema Cele mai apropiate puncte din plan Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
#include<cmath>
#include<algorithm>
using namespace std;

long i,j,n,m=0;
long d;
double rez=1000000000,p;
struct pc
{
	long x,y;
};
pc a[100010],b[100010];
bool cmp(pc a1,pc b1)
{
	return a1.x<b1.x;
}
bool cmp1(pc a1,pc b1)
{
	return a1.y<b1.y;
}
void detvec()
{
	long i;
	for(i=1;i<=n;++i)
		if(a[i].x<=d+rez&&a[i].x>=d-rez)
			++m;
}
double euclid(long i,long j)
{
	return sqrt(pow(a[i].x-a[j].x,double(2))+pow(a[i].y-a[j].y,double(2)));
}
int main()
{
	FILE *f=fopen("cmap.in","r");
	FILE *g=fopen("cmap.out","w");
	fscanf(f,"%ld",&n);
	for(i=1;i<=n;++i)
		fscanf(f,"%ld%ld",&a[i].x,&a[i].y);
	sort(a+1,a+n+1,cmp);
	d=a[n/2].x;
	detvec();
	for(i=1;i<=m;++i)
	for(j=i+1;j<=i+7&&j<=m;++j)
	{
		p=euclid(i,j);
		if(p<rez)
			rez=p;
	}
	fprintf(g,"%.6lf",rez);
	return 0;
}