Pagini recente » Cod sursa (job #973288) | Monitorul de evaluare | Cod sursa (job #2206344) | Cod sursa (job #733530) | Cod sursa (job #2031255)
#include <bits/stdc++.h>
using namespace std;
const int DIM = 50005;
const double EPS = 0.0001;
const int dx[5] = {0, -1, 0, 1, 0};
const int dy[5] = {0, 0, 1, 0, -1};
typedef pair<double, double> pnt;
pnt pts[DIM];
inline double calcdist(pnt p, int n)
{
double sum = 0;
for (int i = 1; i <= n; ++i)
sum += sqrt((p.first - pts[i].first) * (p.first - pts[i].first) +
(p.second - pts[i].second) * (p.second - pts[i].second));
return sum;
}
int main(void)
{
freopen("adapost2.in", "r", stdin);
freopen("adapost2.out", "w", stdout);
int n;
scanf("%d", &n);
double sx = 0, sy = 0;
for (int i = 1; i <= n; ++i) {
scanf("%lf %lf", &pts[i].first, &pts[i].second);
sx += pts[i].first, sy += pts[i].second;
}
pnt cn = {sx / n, sy / n};
double dst = calcdist(cn, n);
for (double stp = 1000.0; stp > EPS; stp /= 2.0) {
bool ok = false;
for (int j = 1; j <= 4; ++j) {
pnt np(cn.first + dx[j] * stp,
cn.second + dy[j] * stp);
double aux = calcdist(np, n);
if (dst > aux)
dst = aux, cn = np, ok = true;
}
if (ok)
stp *= 2.0;
}
printf("%lf %lf\n", cn.first, cn.second);
return 0;
}