有最小值、最大值、中位数,很容易想到从小到大排序,再者就是关于中位数的值,奇偶不一样,另一个需要注意的点就是题目中所说的“整数直接输出,涉及分数(其实也就是小数)的情况,四舍五入后保留一位小数输出”,所以偶数组中要判断中间两个数相加的奇偶性,四舍五入在这里完全没有必要考虑进去,因为如果和为奇数,/2.0之后一定是.500等的形式,保留一位小数正好是.5,所以直接按一位小数对其进行输出即可。
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
cin >> n;
int a[n];
for(int i = 0;i<n;i++){
cin >> a[i];
}
sort(a,a+n);
int mid1;
double mid2;
bool flag1 = false,flag2 = false;
if(n%2==1){
mid1 = a[n/2];
flag1 = true;
}
else{
int z = a[n/2-1] + a[n/2];
if(z%2==0){
mid1 = (a[n/2-1] + a[n/2])/2;
flag1 = true;
}
else{
mid2 = (a[n/2-1] + a[n/2])/2.0;
flag2 = true;
}
}
if(flag1){
printf("%d %d %d",a[n-1],mid1,a[0]);
}
else if(flag2){
printf("%d %.1lf %d",a[n-1],mid2,a[0]);
}
return 0;
}