Cod sursa(job #2084008)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 8 decembrie 2017 15:08:23
Problema Cele mai apropiate puncte din plan Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
#define NMAX 100005

using namespace std;

ifstream fin("fisier.in");
ofstream fout("fisier.out");

pair<int, int> v[NMAX];

bool cmpy(pair<int, int> A, pair<int, int> B) {
	return A.second < B.second;
}

long long dist(pair<int, int> A, pair<int, int> B) {
	return 1LL*(A.first-B.first)*(A.first-B.first) + 1LL*(A.second-B.second)*(A.second-B.second);
}

int main() {
	int i,n,j;
	long long ans=1000000000LL*1000000000LL,res;

	fin >>n;

	for(i=1;i<=n;++i) fin>>v[i].first>>v[i].second;

	sort(v+1,v+n+1);
	for(i=1;i<=n;++i) {
		for(j=-100;j<=100;++j) {
			if(j == 0) continue;
			if(i-j<1 || i+j>n) continue;

			res = dist(v[i], v[i-j]);
			cout<<res<<' ';
			ans = min(res,ans);
		}
	}

	sort(v+1,v+n+1,cmpy);

	for(i=1;i<=n;++i) {
		for(j=-100;j<=100;++j) {
			if(j == 0) continue;
			if(i-j<1 || i+j>n) continue;

			res = dist(v[i], v[j]);
			ans = min(res,ans);
		}
	}

	fout<<fixed<<setprecision(6)<<sqrt(ans);

	return 0;
}