Pagini recente » Cod sursa (job #602415) | Cod sursa (job #274221) | Cod sursa (job #2890225) | Cod sursa (job #1571661) | Cod sursa (job #2377337)
#include <bits/stdc++.h>
using namespace std;
vector<pair<double, double>> v;
int n;
double x, y, dist;
const vector<pair<int, int>> coord {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
inline double sqr(double x)
{
return pow(x, 2);
}
void calculeaza(double dd, double &xx, double &yy, double &distanta, bool isFirst)
{
if (isFirst)
{
xx = yy = 0;
for (int i = 0; i < n; ++i)
{
xx += v[i].first * dd;
yy += v[i].second * dd;
}
xx /= n;
yy /= n;
}
distanta = 0;
for (int i = 0; i < n; ++i)
{
distanta += sqrt(sqr(xx-v[i].first) + sqr(yy-v[i].second));
}
}
int main()
{
ifstream fin("adapost2.in");
fin >> n;
int i;
double xx, yy, cDist;
for (i = 0; i < n; ++i)
{
fin >> x >> y;
v.push_back({x, y});
}
fin.close();
calculeaza(1.0, x, y, dist, true);
xx = x;
yy = y;
for (double dd = 1000; dd > 0.001;)
{
bool ok = false;
for (i = 0; i < 4; ++i)
{
xx = x + coord[i].first * dd;
yy = y + coord[i].second * dd;
calculeaza(dd, xx, yy, cDist, false);
if (cDist < dist)
{
ok = true;
dist = cDist;
x = xx;
y = yy;
}
}
if (!ok)
dd /= 2;
}
ofstream fout("adapost2.out");
fout.setf(ios::fixed, ios::floatfield);
fout.precision(4);
fout << x << " " << y;
fout.close();
return 0;
}