Pagini recente » Cod sursa (job #2678446) | Borderou de evaluare (job #1566673) | Cod sursa (job #2500050) | Cod sursa (job #640781) | Cod sursa (job #793297)
Cod sursa(job #793297)
# include <algorithm>
# include <math.h>
# include<iostream>
# define DIM 50001
using namespace std;
int n;
double min0, ax[ DIM ], ay[ DIM ];
struct pct {double x, y;};
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 - ax[ i ] ) * ( x - ax[ i ] ) + ( y - ay[ i ] ) * ( y - ay[ i ] ) );
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", &ax[ i ], &ay[ i ] );
aux.x = 1234;
aux.y = 4321;
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;
}