Pagini recente » Cod sursa (job #852830) | Cod sursa (job #618683) | Cod sursa (job #3308741) | Cod sursa (job #2340486) | Cod sursa (job #3348620)
#include <bits/stdc++.h>
using namespace std;
#define USE_STD_IO 0
#if USE_STD_IO
#define fin cin
#define fout cout
#else
ifstream fin("adapost2.in");
ofstream fout("adapost2.out");
#endif // USE_STD_IO
const double DX[] = {1, -1, 0, 0, 1, 1, -1, -1};
const double DY[] = {0, 0, 1, -1, 1, -1, 1, -1};
struct Punct {
double x, y;
};
double px, py, lg;
Punct v[50002];
int n, i;
static inline double Dist(double px, double py) {
if(!(0.0 <= px && px <= 1000.0 && 0.0 <= py && py <= 1000.0)) {
return (1 << 30) - 2;
}
double dist = 0;
for(i = 1; i <= n; i++) {
dist += sqrt((px - v[i].x) * (px - v[i].x) + (py - v[i].y) * (py - v[i].y));
}
return dist;
}
int main() {
if(USE_STD_IO) ios_base::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
fin >> n;
for(i = 1; i <= n; i++) fin >> v[i].x >> v[i].y;
lg = 250;
px = py = 500;
double dmi = Dist(px, py);
while(true) {
for(int dir = 0; dir < 4; dir++) {
double dist = Dist(px + lg * DX[dir], py + lg * DY[dir]);
if(dist < dmi) {
dmi = dist;
px += lg * DX[dir];
py += lg * DY[dir];
}
}
lg /= 2.0;
if(lg < 0.0001) break;
}
fout << setprecision(5) << fixed;
fout << px << ' ' << py;
return 0;
}