Pagini recente » Cod sursa (job #2787213) | Cod sursa (job #385681) | Cod sursa (job #1989835) | Cod sursa (job #803975) | Cod sursa (job #2066471)
#include <bits/stdc++.h>
#define pb push_back
#define x first
#define y second
#define mod 1000000007LL
using namespace std;
typedef long long ll;
typedef pair< double , double > PII;
int n;
double x, y, px, py;
PII a[50005];
double dist(double x, double y, double xx, double yy){
return sqrt((xx - x) * (xx - x) + (yy - y) * (yy - y));
}
double check(double x, double y){
double rs = 0;
for (int i = 1; i <= n; i++)
rs += dist(x, y, a[i].x, a[i].y);
return rs;
}
int main(){
freopen("adapost2.in", "r", stdin);
freopen("adapost2.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++){
scanf("%lf%lf", &x, &y);
a[i] = {x * 1000.0, y * 1000.0};
px += a[i].x;
py += a[i].y;
}
px /= (double)n; py /= (double)n; //stabilesc o pozitie de start optima
double CURR = check(px, py), pas = 100.000;
while (pas >= 1){
double R = check(px + pas, py);
double L = check(px - pas, py);
double U = check(px, py + pas);
double D = check(px, py - pas);
if (min({R, L, U, D}) >= CURR){pas *= 0.6; continue;}
double mn = min({R, L, U, D});
px += (R == mn ? pas : (L == mn ? -pas : 0));
py += (U == mn ? pas : (D == mn ? -pas : 0));
CURR = mn;
}
px /= 1000.0, py /= 1000.0;
printf("%lf %lf", px, py);
}