Pagini recente » Cod sursa (job #841314) | Cod sursa (job #363039) | Cod sursa (job #2861814) | Cod sursa (job #176964) | Cod sursa (job #1046640)
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("adapost2.in");
ofstream fout("adapost2.out");
int N;
double x[50005], y[50005];
double dmin = 5000;
double dist(int i, int j)
{
return sqrt((x[i]-x[j])*(x[i]-x[j]) + (y[i] - y[j])*(y[i] -y[j]));
}
double suma_dist(double a, double b)
{
double s = 0;
x[N + 1] = a; y[N + 1] = b;
for( int i = 1; i <= N; i++)
s += dist(i, N+1);
return s;
}
int main()
{
int i;
double sx = 0, sy = 0,abat = 2000;
fin>>N;
for( i = 1; i <= N; i++)
{
fin>>x[i]>>y[i];
sx += x[i];
sy += y[i];
}
sx = sx / N;
sy = sy / N;
while(abat > 0.00001)
{
double f;
f = suma_dist(sx + abat, sy);
if( f < dmin)
{
dmin = f;
sx += abat;
continue;
}
f = suma_dist(sx - abat, sy);
if( f < dmin)
{
dmin = f;
sx -= abat;
continue;
}
f = suma_dist( sx, sy + abat);
if( f < dmin)
{
dmin = f;
sy += abat;
continue;
}
f = suma_dist( sx, sy - abat);
if( f < dmin)
{
dmin = f;
sy -= abat;
continue;
}
abat = abat / 2;
}
fout<<sx <<" "<< sy;
return 0;
}