Cod sursa(job #1054627)

Utilizator leontinLeontin leontin Data 13 decembrie 2013 23:58:51
Problema Adapost 2 Scor 92
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <fstream>
#include <math.h>
#include <iomanip>
#define maxxx 50010

using namespace std;
ifstream fin("adapost2.in");
ofstream gout("adapost2.out");

int n;
double x[maxxx], y[maxxx];
double minn = 200000000;
double fun(int i, int j)
{
    double x1 = x[i]-x[j], y1 = y[i] - y[j];
    return sqrt( x1 * x1 + y1 * y1);
}
double lungime(double a, double b)
{
    double s0 = 0;
    x[n + 1] = a; y[n + 1] = b;
    for( int i = 1; i <= n; i++)
        s0 += fun(i, n+1);
    return s0;
}
int main()
{
    int i;
    double sxx = 0, syy = 0,eroare = 200;

    fin>>n;


    for( i = 1; i <= n; i++)
    {
        fin>>x[i]>>y[i];
        sxx += x[i];
        syy += y[i];
    }
    sxx /= n;
    syy /= n;
    while(eroare > 0.0005)
    {
        double f;
        f = lungime(sxx + eroare, syy);
        if( f  < minn)
            {
                minn = f;
                sxx += eroare;

            }
        f = lungime(sxx - eroare, syy);
        if( f  < minn)
            {
                minn = f;
                sxx -= eroare;

            }
        f = lungime( sxx, syy + eroare);
        if( f  < minn)
            {
                minn = f;
                syy += eroare;

            }
        f = lungime( sxx, syy - eroare);
        if( f  < minn)
            {
                minn = f;
                syy -= eroare;

            }
        eroare = eroare / 2;
    }
    gout<<fixed<<setprecision(4);
gout <<sxx<<" "<<syy;

    return 0;
}