Cod sursa(job #2275303)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 3 noiembrie 2018 00:31:10
Problema Adapost 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("adapost2.in");
ofstream g("adapost2.out");
int n;
double a[50001],b[50001],xc,yc,d,pas,eps=0.001,px,py,minim;
bool sw;
int dx[]={0,-1,0,1};
int dy[]={1,0,-1,0};
double distanta(double x,double y)
{
    double rez=0;
    int i;
    for(i=1;i<=n;i++)
    {
        rez=rez+sqrt((x-a[i])*(x-a[i])+(y-b[i])*(y-b[i]));
    }
    return rez;
}
int main()
{
    int i;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i]>>b[i];
        xc=xc+a[i];
        yc=yc+b[i];
    }
    xc=xc/n;
    yc=yc/n;
    minim=distanta(xc,yc);
    pas=100;
    while(pas>eps)
    {
        sw=0;
        for(i=0;i<4 && sw==0;i++)
        {
            px=xc+pas*dx[i];
            py=yc+pas*dy[i];
            d=distanta(px,py);
            if(d<minim)
            {
                minim=d;
                xc=px;
                yc=py;
                sw=1;
            }
        }
        if(sw==0)
        {
            pas=pas/2;
        }
    }
    g<<xc<<" "<<yc;
    return 0;
}