Cod sursa(job #63368)

Utilizator peanutzAndrei Homorodean peanutz Data 27 mai 2007 23:27:46
Problema Adapost 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
//andrei homorodean, hunedoara
#include <stdio.h>
#include <math.h>
#define eps 0.0001

#define NMAX 50005

int n;
double a, b, x[NMAX], y[NMAX];
double distanta, search;

inline double distance(double x1, double y1, double x2, double y2)
{
	return sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
}
double dist(double a, double b)
{
	int i;
	double s = 0;
	for(i = 1; i <= n; ++i)
	{
		s += distance(a, b, x[i], y[i]);
	}
	return s;
}
void read()
{       int i;
	scanf("%d\n", &n);
	for(i = 1; i <= n; ++i)
	{
		scanf("%lf %lf\n", x+i, y+i);
		a += x[i];
		b += y[i];
	}
	a /= n;
	b /= n;
	distanta = dist(a, b);
	search = 4;
}

int main()
{
	double aux;
	freopen("adapost2.in", "r", stdin);
	freopen("adapost2.out", "w", stdout);
	read();

	while(search >= eps)
	{
		if(distanta > (aux = dist(a + search, b)))
		{
			distanta = aux;
			a = a + search;
		}
		else if(distanta > (aux = dist(a, b + search)))
		{
			distanta = aux;
			b = b + search;
		}
		else if(distanta > (aux = dist(a - search, b)))
		{
			distanta = aux;
			a = a - search;
		}
		else if(distanta > (aux = dist(a, b - search)))
		{
			distanta = aux;
			b = b - search;
		}
		else
			search /= 2;
	}
	printf("%.4lf %.4lf\n", a, b);

	fclose(stdin);
	fclose(stdout);

	return 0;
}