陈柏诚 • 2年前
using namespace std;
int main() { int i; long long x,y; long long x1,y1,x2,y2,n; long long r=0,ans=INF; pairdis[200000];//pair类型 cin>>x1>>y1>>x2>>y2>>n; for (i=1; i<=n; i++) {
cin>>x>>y;
dis[i]=make_pair((x-x1)*(x-x1)+(y-y1)*(y-y1),(x-x2)*(x-x2)+(y-y2)*(y-y2));//距离
} sort(dis+1,dis+n+1); while(n) {
ans=min(ans,dis[n].first+(r=max(r,dis[n+1].second)));
n--;
} cout<<ans<<endl; return 0; }
评论:
pair<数据类型,数据类型> 数组;
修改代码如下:
#include<bits/stdc++.h>
using namespace std;
#define INF 0x7f7f7f7f
int main()
{
int i;
long long x,y,x1,y1,x2,y2,n,r=0,ans=INF;
pair<long long , long long> dis[200000];
cin>>x1>>y1>>x2>>y2>>n;
for (i=1; i<=n; i++)
{
cin>>x>>y;
dis[i]=make_pair((x-x1)*(x-x1)+(y-y1)*(y-y1),(x-x2)*(x-x2)+(y-y2)*(y-y2));
}
sort(dis+1,dis+n+1);
while(n)
{
ans=min(ans,dis[n].first+(r=max(r,dis[n+1].second)));
n--;
}
cout<<ans<<endl;
return 0;
}