Pagini recente » Cod sursa (job #329131) | Profil bety_antonievici | kingoni | Cod sursa (job #92181) | Cod sursa (job #329451)
Cod sursa(job #329451)
# include <algorithm>
# include <math.h>
using namespace std;
# define DIM 50001
struct pct {
double x, y;
};
int n;
double min0;
pct a[ DIM ];
inline double min ( double x, double y, double z, double w ) {
if ( x < y && x < z && x < w )
return x;
if ( y < x && y < z && y < w )
return y;
if ( z < x && z < y && z < w )
return z;
return w;
}
double calc ( double x, double y ) {
int i;
double d;
d = 0;
for ( i = 1; i <= n; ++ i )
d += sqrt ( ( x - a[ i ].x ) * ( x - a[ i ].x ) + ( y - a[ i ].y ) * ( y - a[ i ].y ) );
return d;
}
void solve () {
int i;
double p, d0, d1, d2, d3;
pct aux;
scanf ( "%d", &n );
for ( i = 1; i <= n; ++ i )
scanf ( "%lf%lf", &a[ i ].x, &a[ i ].y );
aux.x = 123;
aux.y = 321;
min0 = 50000001;
for ( p = 1000; p > 0.001; ) {
d0 = calc ( aux.x - p, aux.y );
d1 = calc ( aux.x + p, aux.y );
d2 = calc ( aux.x, aux.y - p );
d3 = calc ( aux.x, aux.y + p );
if ( d0 > min0 && d1 > min0 && d2 > min0 && d3 > min0 )
p = p / 2;
else if ( min ( d0, d1, d2, d3 ) == d0 ) {
aux.x -= p;
min0 = d0;
}
else if ( min ( d0, d1, d2, d3 ) == d1 ) {
aux.x += p;
min0 = d1;
}
else if ( min ( d0, d1, d2, d3 ) == d2 ) {
aux.y -= p;
min0 = d2;
}
else if ( min ( d0, d1, d2, d3 ) == d3 ) {
aux.y += p;
min0 = d3;
}
}
printf ( "%lf %lf", aux.x, aux.y );
}
int main () {
freopen ( "adapost2.in", "r", stdin );
freopen ( "adapost2.out", "w", stdout );
solve ();
return 0;
}