题解
2026-10-05 21:23:34
发布于:广东
22阅读
0回复
0点赞
题解:
本题就是普通的双关键字排序再加一个两点间距离公式,注意要开long long
代码如下:
#include<bits/stdc++.h>
using namespace std;
struct cm{
string s;
long long x,y,d;
}a[200000];
bool cmp(cm p,cm q){
if(p.d!=q.d){
return p.d<q.d;
}
else{
return p.s<q.s;
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].s>>a[i].x>>a[i].y;
}
string z;
cin>>z;
int X,Y,xb;
for(int i=1;i<=n;i++){
if(z==a[i].s){
xb=i;
a[i].d=0;
X=a[xb].x;
Y=a[xb].y;
break;
}
}
for(int i=1;i<=n;i++){
if(i!=xb){
a[i].d=sqrt(pow(abs(X-a[i].x),2)+pow(abs(Y-a[i].y),2));
}
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].s<<" ";
}
}
这里空空如也


有帮助,赞一个