#include<bits/stdtr1c++.h> using namespace std; inline static const nullptr_t _={ios_base::sync_with_stdio(0);cin.tie(nullptr),cout.tie(nullptr);return nullptr;}(); int n;pair<double,double> a;double mindis=numeric_limits::infinity(); double dist(pair<double,double> a,pair<double,double> b){return sqrt((a.first-b.first)(a.first-b.first)+(a.second-b.second)*(a.second-b.second));} int main(){cin>>n;a=new pair<double,double>[n];for(int i=0;i<n;i++) cin>>a[i].first>>a[i].second;stable_sort(a,a+n);for(int i=1;i<n;i++) mindis=min(mindis,dist(a[i],a[i-1]));stable_sort(a,a+n,[](pair<double,double> a,pair<double,double> b){return a.second<b.second||(a.second==b.second&&a.first<b.first);});for(int i=1;i<n;i++) mindis=min(mindis,dist(a[i],a[i-1]));cout<<fixed<<setprecision(4)<<mindis<<'\n';delete[] a;return 0;}//转换为Go语言代码内容:package main

import ( "fmt" "math" "sort" )

type pair struct { first float64 second float64 }

func dist(a, b pair) float64 { return math.Sqrt((a.first-b.first)(a.first-b.first) + (a.second-b.second)(a.second-b.second)) }

func main() { var n int fmt.Scan(&n) a := make([]pair, n) for i := 0; i < n; i++ { fmt.Scan(&a[i].first, &a[i].second) } sort.SliceStable(a, func(i, j int) bool { return a[i].first < a[j].first || (a[i].first == a[j].first && a[i].second < a[j].second) }) mindis := math.Inf(1) for i := 1; i < n; i++ { mindis = math.Min(mindis, dist(a[i], a[i-1])) } sort.SliceStable(a, func(i, j int) bool { return a[i].second < a[j].second || (a[i].second == a[j].second && a[i].first < a[j].first) }) for i := 1; i < n; i++ { mindis = math.Min(mindis, dist(a[i], a[i-1])) } fmt.Printf("%.4f\n", mindis) }


原文地址: https://www.cveoy.top/t/topic/pP8W 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录