Cod sursa(job #1970283)

Utilizator SolcanMihaiSolcan Mihai Andrei SolcanMihai Data 19 aprilie 2017 09:07:53
Problema Cele mai apropiate puncte din plan Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <utility>

using namespace std;

const int N = 100005;
const int inf = 0x3f3f3f3f;

int n;
pair<double, double> puncte[N];

double dist(pair<double, double> x1, pair<double, double> x2)
{
	return sqrt((x1.first - x2.first) * (x1.first - x2.first) + (x1.second - x2.second) * (x1.second - x2.second));
}

void citire()
{
	scanf("%d", &n);

	double tmp1, tmp2;

	for(int i = 0; i < n; i++)
	{
		scanf("%lf %lf", &tmp1, &tmp2);
		puncte[i] = make_pair(tmp1, tmp2);
	}

	sort(puncte, puncte + n);
}

void solve()
{
	double distanta = inf;

	for(int i = 1; i < n; i++)
	{
		for(int j = i - 1; j >= 0 && (puncte[i].first - puncte[j].first) < distanta; j--)
		{
			double distx = dist(puncte[i], puncte[j]);

			if(distx < distanta)
			{
				distanta = distx;
			}
		}
	}

	printf("%lf", distanta);
}

int main()
{
	freopen("cmap.in", "r", stdin);
	freopen("cmap.out", "w", stdout);

	citire();
	solve();

	return 0;
}