Pagini recente » Cod sursa (job #2374175) | Cod sursa (job #2891842) | Cod sursa (job #2394004) | Cod sursa (job #559566) | Cod sursa (job #2072141)
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream in("cmap.in");
ofstream out("cmap.out");
struct punct {
int x=0;
int y=0;
};
double distEuclid(punct a, punct b) {
double x = a.x - b.x;
double y = a.y - b.y;
double dist;
dist = pow(x, 2) + pow(y, 2); //calculating distance by euclidean formula
dist = sqrt(dist); //sqrt is function in math.h
return dist;
}
bool cmpDupaXSiY(const punct& a, const punct& b)
{
if (a.x == b.x)
return a.y < b.y;
return a.x < a.y;
}
void distMinPunctePlan() {
int n;
in >> n;
vector <punct> puncte(n);
for (int i = 0; i < n; ++i) {
in >> puncte[i].x;
in >> puncte[i].y;
}
sort(puncte.begin(), puncte.end(), cmpDupaXSiY);
double distMin = 2000000000;
for (int i=0; i+1<puncte.size(); ++i) {
for (int j=i+1; j <puncte.size() && j-i<=8; ++j) {
double distCur = distEuclid(puncte[i],puncte[j]);
if (distCur < distMin)
distMin = distCur;
}
}
out << fixed;
out << setprecision(6) << distMin << "\n";
}
int main()
{
distMinPunctePlan();
return 0;
}