Pagini recente » Cod sursa (job #694697) | Cod sursa (job #1791631) | Cod sursa (job #123356) | Cod sursa (job #1883899) | Cod sursa (job #63367)
Cod sursa(job #63367)
//andrei homorodean, hunedoara
#include <stdio.h>
#include <math.h>
#define eps 0.00001
#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;
}