Pagini recente » Cod sursa (job #1911468) | Cod sursa (job #2655831) | Cod sursa (job #1114324) | Cod sursa (job #2508979) | Cod sursa (job #191580)
Cod sursa(job #191580)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const double eps = 1e-10;
int N;
double X[50001], Y[50001];
double Xm, Ym;
double d, D;
inline double dist(double x1, double y1, double x2, double y2)
{
return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
}
int main(int argc, char *argv[])
{
FILE *fi = fopen("adapost2.in", "r");
fscanf(fi, "%d", &N);
for (int i(0); i < N; ++i) {
fscanf(fi, "%lf %lf", X+i, Y+i);
Xm += X[i];
Ym += Y[i];
}
fclose(fi);
Xm = Xm / (double)N;
Ym = Ym / (double)N;
for (int i(0); i < N; ++i)
d += dist(Xm, Ym, X[i], Y[i]);
while (fabs(d-D) > eps) {
/*cout << d << endl;
cout << Xm << " " << Ym << endl;*/
D = d;
double xm = Xm;
double ym = Ym;
Xm = Ym = 0;
double s(0);
for (int i(0); i < N; ++i) {
double aux = dist(xm, ym, X[i], Y[i]);
Xm += X[i]/aux;
Ym += Y[i]/aux;
s += 1.0 / aux;
}
Xm /= s;
Ym /= s;
d = 0;
for (int i(0); i < N; ++i)
d += dist(Xm, Ym, X[i], Y[i]);
}
FILE *fo = fopen("adapost2.out", "w");
fprintf(fo, "%.4lf %.4lf\n", Xm, Ym);
fclose(fo);
return 0;
}