Cod sursa(job #1970021)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 18 aprilie 2017 20:04:17
Problema Adapost 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <cstdio>
#include <cmath>

const double nul=0.0f;
const double eps=1e-5f;
double sx[50001], sy[50001];

struct Pozitie
{
    double x, y;
};

Pozitie cort, delta;

int n;

inline double dist( double cx, double cy )
{
    int i;
    double s=nul;

    for( i=1;i<=n;i++ )
        s+=sqrt((cx-sx[i])*(cx-sx[i])+(cy-sy[i])*(cy-sy[i]));

    return s;
}

int main()
{
    freopen( "adapost2.in", "r", stdin );
    freopen( "adapost2.out", "w", stdout );

    int i;
    double pas=250.0f;

    scanf( "%d", &n );

    for( i=1;i<=n;i++ )
    {
        scanf( "%lf%lf", &sx[i], &sy[i]);

        cort.x+=sx[i];
        cort.y+=sy[i];
    }

    cort.x/=(double)n;
    cort.y/=(double)n;

    while( pas>eps )
    {
        delta.x=(dist(cort.x+eps,cort.y)-dist(cort.x,cort.y))/eps;
        delta.y=(dist(cort.x,cort.y+eps)-dist(cort.x,cort.y))/eps;

        if( delta.x<nul )
            cort.x+=pas;
        else
            cort.x-=pas;

        if( delta.y<nul )
            cort.y+=pas;
        else
            cort.y-=pas;

        pas*=2.0f/3.0f;
    }

    printf( "%.4f %.4f", cort.x, cort.y );

    return 0;
}