Cod sursa(job #2286290)

Utilizator alexnigaNiga Alexandru alexniga Data 20 noiembrie 2018 01:33:01
Problema Adapost 2 Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

ifstream f("adapost2.in");
ofstream g("adapost2.out");

double pozx[50001], pozy[50001], xbun, ybun, dis, disnew, pas = 1000;

int  n, dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0};

double distanta(double x1, double y1, double x2, double y2)
{
    return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}

double suma(double xbun, double ybun)
{
    double sum = 0;
    for (int i = 1; i <= n; i++)
        sum = sum + distanta(pozx[i], pozy[i], xbun, ybun);
    return sum;

}

int main()
{
    int i;

    f >> n;

    for(i = 1; i <= n; i++)
    {
        f >> pozx[i] >> pozy[i];
        xbun += pozx[i];
        ybun += pozy[i];
    }
    xbun = xbun *1.0 / n;
    ybun = ybun *1.0 / n;

    dis = suma(xbun, ybun);
    double copiex, copiey;

    while (pas > 0.0001)
    {
        for (int i = 0; i <= 3; i++)
        {
            copiex = xbun + pas * dx[i];
            copiey = ybun + pas * dy[i];
            disnew = suma(copiex, copiey);

            if (disnew < dis)
            {
                dis = disnew;
                xbun = copiex;
                ybun = copiey;

            }
        }
            pas /= 2;
    }
    g << xbun<< " " << ybun;

    return 0;
}