Cod sursa(job #2618073)

Utilizator armigheGheorghe Liviu Armand armighe Data 23 mai 2020 16:55:18
Problema Adapost 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
#include<cmath>
#include<iomanip>
#define eps 0.001
using namespace std;
ifstream f("adapost2.in");
ofstream g("adapost2.out");
struct punct
{
    double x,y;
};
punct v[50002],sol;
int n,dx[]={0,1,0,-1,0},dy[]={0,0,1,0,-1};

inline double dist(double x,double y)
{
    int i;
    double d=0;
    for(i=1;i<=n;i++)
        d+=sqrtl((max(x,v[i].x)-min(x,v[i].x))*(max(x,v[i].x)-min(x,v[i].x))+(max(y,v[i].y)-min(y,v[i].y))*(max(y,v[i].y)-min(y,v[i].y)));
    return d;
}

int main()
{
    int i;
    double pas,d,x;
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i].x>>v[i].y;
    sol.x=500;
    sol.y=500;
    pas=500;
    d=dist(sol.x,sol.y);
    while(pas>=eps)
    {
        for(i=1;i<=4;i++)
        {
            x=dist(sol.x+pas*dx[i],sol.y+pas*dy[i]);
            if(x<d)
            {
                d=x;
                sol.x+=pas*dx[i];
                sol.y+=pas*dy[i];
            }
        }
        pas/=2;
    }
    g<<fixed<<setprecision(4)<<sol.x<<" "<<sol.y;
    return 0;
}