#include <iostream>
#include <algorithm>
#include<stdio.h>
using namespace std;
bool cmp(int x,int y)
{
return x>y;
}
double b[100];
long long a[100002];
int main()
{
int n;
cin>>n;
for(int i=0; i<n; i++)
{
cin>>a[i];
}
sort(a,a+n,cmp);
b[0]=a[0];
b[1]=a[n-1];
if(n%2==0)
{
b[2]=(a[n/2]+a[n/2-1]);
b[2]/=2;
}
else
b[2]=a[n/2];
int y=b[2]*100;
if(y%10>4)
b[2]+=0.1;
sort(b,b+3,cmp);
for(int i=0; i<3; i++)
{
if(((b[i]-(int)b[i]))!=0){
cout<<b[i]<<" ";
//printf("%.1lf",b[i]);
//cout<<" ";
}
else
{
cout<<(int)b[i]<<" ";
}
}
return 0;
}
小结:
这题看了有些人用了printf("%.1lf",b[i]);其实没必要,条件说的这个保留一位四舍五入在这里其实很多余,因为任何两个整数相加/2结果都是余0.5,这条件没用。
需要注意的是数组范围,这题很大要100000的数组,而且数据绝对值很大,切记要用长整型long long,而且它说输出整数不能直接输出double类型必须输出int型