Pagini recente » Cod sursa (job #1012965) | Cod sursa (job #1464105) | Cod sursa (job #614010) | Cod sursa (job #2707878) | Cod sursa (job #2281327)
#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;
}