Pagini recente » Cod sursa (job #233985) | Borderou de evaluare (job #2991036) | Cod sursa (job #2755981) | Cod sursa (job #2442964) | Cod sursa (job #2377882)
#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
const ld eps = 0.00005;
const int N = 50010;
struct point{
ld x, y;
} a[N];
int n;
ld step = 1000, mn = 1e9, x, y;
double dist(double i3, double j3){
ld rs = 0;
for (int i=1; i<=n; i++) rs += sqrt((a[i].x-i3)*(a[i].x-i3) + (a[i].y-j3)*(a[i].y-j3));
return rs;
}
int main(){
ifstream cin ("adapost2.in");
ofstream cout ("adapost2.out");
cin >> n;
for (int i=1; i<=n; i++) cin >> a[i].x >> a[i].y, x += a[i].x, y += a[i].y;
x /= n; y /= n;
while (step > eps){
for (int dir=0; dir<4; dir++){
double i2 = x + step*dx[dir], j2 = y + step*dy[dir];
double t = dist(i2, j2);
if (t < mn) x = i2, y = j2, mn = t;
}
step /= 2;
}
cout << fixed << setprecision(4) << x << " " << y;
return 0;
}