Cod sursa(job #11894)

Utilizator blasterzMircea Dima blasterz Data 2 februarie 2007 11:23:10
Problema Adapost 2 Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#define maxn 50001
#include <cmath>
#define next(p) (((p)*10+1)/(double)10)
struct point { double x, y;};
point x[maxn];

double distance(point a, point b)
{
	return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int n;
int main()
{
	int i;
	freopen("adapost2.in", "r",stdin);
	scanf("%d\n", &n);
	for(i=1;i<=n;i++) scanf("%lf %lf\n", &x[i].x, &x[i].y);
	
	
	//printf("%f\n", x[1].x);
	double medx=0, medy=0;
	for(i=1;i<=n;i++) medx+=x[i].x, medy+=x[i].y;
	medx=medx/(double) n;
	medy=medy/(double) n;
	freopen("adapost2.out", "w", stdout);
	//printf("%lf %lf\n", medx, medy);

	double p,j, k, smin=0x3f3f3f3f, solx, soly;
	int nr=0;
	
	for(p=medx-1;p<=medx+1;p=next(p))
		for(k=medy-1;k<=medy+1;k=next(k))
		{
			//printf("%lf %lf\n", p, k);
			double sum=0;
			point t;
			t.x=p;
			t.y=k;
			for(i=1;i<=n;i++) sum+=distance(x[i], t);
			if(smin>sum) { smin=sum; solx=p; soly=k;}
		}

		
		printf("%lf %lf\n", solx, soly);

	
	return 0;
}