Cod sursa(job #2281327)

Utilizator cameliapatileaPatilea Catalina Camelia cameliapatilea Data 12 noiembrie 2018 01:03:18
Problema Adapost 2 Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;

ifstream f("adapost2.in");
ofstream g("adapost2.out");
int n, i;
int dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0};
double v[50005], w[50005], suma_x, suma_y, maxi=1000, distanta, distanta_minima, x_minim, y_minim;
double calculeaza_distanta( double x1, double y1, double x2, double y2)
{
    return sqrt( ( x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
double calcul( double x, double y)
{
    double suma = 0;
    for( int i = 1; i <=n; i++)
        suma= suma + calculeaza_distanta(x, y, v[i], w[i]);
    return suma;

}

int main() {
f>>n;
for(i = 1; i <= n; i++)
{
    f >> v[i] >> w[i];
    suma_x = suma_x + v[i];
    suma_y = suma_y + w[i];

}
suma_x = suma_x * 1.0 / n;
suma_y = suma_y * 1.0 / n;
distanta = calcul( suma_x , suma_y);
while( maxi> 0.001)
{
    for( i = 0; i < 4; i++)
    {
        x_minim = suma_x + maxi * dx[i];
        y_minim = suma_y + maxi * dy[i];
        distanta_minima = calcul(x_minim, y_minim);
        if( distanta_minima < distanta)
        {
            distanta = distanta_minima;
            suma_x = x_minim;
            suma_y = y_minim;
        }
    }
    maxi = maxi / 2;
}
g<< suma_x << " " << suma_y;
    return 0;
}