Cod sursa(job #2285096)

Utilizator Dobricean_IoanDobricean Ionut Dobricean_Ioan Data 18 noiembrie 2018 09:36:58
Problema Adapost 2 Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>
#include <math.h>
#define NMAX 55555
#define eps 1e-10
 
double X[NMAX], Y[NMAX], Xi, Yi, D;
int N;
 
double dist(double x1, double y1, double x2, double y2)
{
        return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
 
int main()
{
        int i;
        double d, s, xi, yi;
 
        freopen("adapost2.in", "r", stdin);
        scanf("%d", &N);
 
        for (i = 0; i < N; i++)
        {
            scanf("%lf %lf", X+i, Y+i);
            Xi += X[i]; Yi += Y[i];
        }
 
        Xi = Xi/(double)N; Yi = Yi/(double)N;
 
        for (i = 0; i < N; i++)
            d += dist(Xi, Yi, X[i], Y[i]);
 
        while (fabs(d-D) > eps)
        {
                D = d;
                s = 0;
                xi = Xi; yi = Yi;
                Xi = Yi = 0;
                for (i = 0; i < N; i++)
                {
                    d = dist(xi, yi, X[i], Y[i]);
                    Xi += X[i]/d;
                    Yi += Y[i]/d;
                    s += (1.0/d);
                }
                Xi /= s; Yi /= s;
                d = 0;
                for (i = 0; i < N; i++)
                    d += dist(Xi, Yi, X[i], Y[i]);
        }
 
        freopen("adapost2.out", "w", stdout);
        printf("%.4lf %.4lf\n", Xi, Yi);
 
        return 0;
        
}