Cod sursa(job #63487)

Utilizator yoyolichIoana Ardeleanu yoyolich Data 28 mai 2007 22:18:37
Problema Adapost 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<stdio.h>
#include<math.h>
#define epsilon 0.000001
double q,c,x[50001],y[50001],xg,yg,summ;
int i,n;
double suma(double xg, double yg)
{
	double sum=0;
	for(int i=1;i<=n;i++) 
		sum+=sqrt((x[i]-xg)*(x[i]-xg)+(y[i]-yg)*(y[i]-yg));
	return sum;
}
int main()
{
	freopen("adapost2.in","r",stdin);
	freopen("adapost2.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%lf %lf",&x[i],&y[i]);
		xg+=x[i];
		yg+=y[i];
	}
	xg/=n;
	yg/=n;
	summ=suma(xg,yg);
	c=100;
	while(c-epsilon>0){
		q=suma(xg+c,yg);
		if(q<summ) {summ=q;xg=xg+c;}
		q=suma(xg-c,yg);
		if(q<summ) {summ=q;xg-=c;}
		q=suma(xg,yg+c);
		if(q<summ) {summ=q;yg+=c;}
		q=suma(xg,yg-c);
		if(q<summ) {summ=q;yg-=c;}
		q=suma(xg+c,yg+c);
		if(q<summ) {summ=q;xg+=c;yg+=c;}
		q=suma(xg+c,yg-c);
		if(q<summ) {summ=q;xg+=c;yg-=c;}
		q=suma(xg-c,yg+c);
		if(q<summ) {summ=q;xg-=c;yg+=c;}
		q=suma(xg-c,yg-c);
		if(q<summ) {summ=q;xg-=c;yg-=c;}
		c/=2;
	}
	printf("%0.4lf %0.4lf\n",xg,yg);
	return 0;
}