Pagini recente » Cod sursa (job #2105759) | Cod sursa (job #2100512) | Cod sursa (job #281785) | Cod sursa (job #1722457) | Cod sursa (job #2969234)
#include <algorithm>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <set>
#define int long double
using namespace std;
ifstream cin( "cmap.in" );
ofstream cout( "cmap.out" );
#define x first
#define y second
set<pair<int, int>> s;
int dis( pair<int, int> A, pair<int, int> B ) {
return sqrt( ( (int)A.x - B.x ) * ( A.x - B.x ) + ( (int)A.y - B.y ) * ( A.y - B.y ) );
}
const int32_t MAX = 1e5 + 3;
pair<int, int> v[ MAX ];
int32_t n;
signed main()
{
cin >> n;
for( int32_t i = 0; i < n; i++ )
cin >> v[ i ].x >> v[ i ].y;
sort( v, v + n, []( pair<int, int> A, pair<int, int> B ) {
return A.x < B.x;
} );
int32_t poz = 0;
int pp;
int dMin = dis( v[ 0 ], v[ 1 ] );
for( int32_t i = 0; i < n; i++ ) {
while( poz < i && (int)v[ i ].x - v[ poz ].x > dMin )
s.erase( v[ poz++ ] );
for( auto it = s.lower_bound( { v[ i ].y - dMin, 0 } ); it != s.end() && (*it).y <= v[ i ].y + dMin; it++ ) {
if( ( pp = dis( v[ i ], (*it) ) ) < dMin )
dMin = pp;
}
s.insert( v[ i ] );
}
cout << fixed << setprecision( 6 ) << dMin << '\n';
return 0;
}