#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n;
cin>>n;
int ID[n]; //先用int存储,之后在输出时补0
int x[n],y[n]; //x 和 y 是其打出的弹洞的平面坐标(x,y)
for(int i=0;i<n;i++)
{
cin>>ID[i]>>x[i]>>y[i];
}
int d[n]; //靶心的距离的平方
for(int i=0;i<n;i++)
{
d[i]=x[i]*x[i]+y[i]*y[i];
}
for(int i=0;i<n;i++) //冒泡排序
{
for(int j=i;j<n;j++)
{
if(d[i]<d[j]){
swap(d[i],d[j]); //交换
swap(ID[i],ID[j]); //交换
}
}
}
printf("%04d %04d",ID[n-1],ID[0]);
//%04d 表示:在输出整数x的时候 按照4个位子的空间左对齐 多余的位子用0代替
//cout<<ID[n-1]<<" "<<ID[0]<<endl;
return 0;
}
______________________________________________________________________________________________________对冒泡排序进行优化
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n;
cin>>n;
int ID[n]; //先用int存储,之后在输出时补0
int x[n],y[n]; //x 和 y 是其打出的弹洞的平面坐标(x,y)
for(int i=0;i<n;i++)
{
cin>>ID[i]>>x[i]>>y[i];
}
int d[n]; //靶心的距离的平方
for(int i=0;i<n;i++)
{
d[i]=x[i]*x[i]+y[i]*y[i];
}
int flag=1; //冒泡排序优化
for(int i=0; i<n&&flag; i++)
{
flag=0;
for(int j=0; j<n-i-1; j++)
{
if(d[j+1]>d[j])
{
swap(d[j+1],d[j]);
swap(ID[j+1],ID[j]);
flag=1;
}
}
}
printf("%04d %04d",ID[n-1],ID[0]);
//%04d 表示:在输出整数x的时候 按照4个位子的空间左对齐 多余的位子用0代替
//cout<<ID[n-1]<<" "<<ID[0]<<endl;
return 0;
}