Pagini recente » Istoria paginii preoni-2006/runda-2/solutii | Cod sursa (job #3200901) | Cod sursa (job #901614) | Cod sursa (job #1762054) | Cod sursa (job #11892)
Cod sursa(job #11892)
#include <cstdio>
#define maxn 50001
#include <cmath>
#define next(p) (((p)*100+1)/(double)100)
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;
}