#include <iostream>
#include <iomanip>
#include <stdio.h>
using namespace std;
int main() {
int N;
cin >> N;
long* arr = new long[N];
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
long max = arr[0], min = arr[N-1];
if(max < min) swap(max, min);
if(N == 1) cout << arr[0] << " " << arr[0] << " " << arr[0];
float mid;
if(N%2) mid = arr[N/2];
else {
mid = (arr[N/2-1] + arr[N/2])/2.0;
}
//cout << mid-int(mid) << endl;
cout << max << " ";
cout << setiosflags(ios::fixed) << setprecision(mid-(int)mid < 0.01?0:1) << mid << " ";
cout << min << endl;
return 0;
}
学习到的知识:
1、注意极端情况,比如只有一个数
2、做除法时除数一定要是带小数点的,如果除的是int,会“收敛”到整数,那样就没有小数了!!!!!
3、如何取小数点:
num-(int)num
4、如何设置输出格式:
cout << setiosflag(ios::fixed) << setprecision(2) << mid << " ";//小数点后两位
5、一定要读题!!!
-
没有注意到题目本身就有“升序或降序”,这么说明不需要排序
-
还是本身就有“升序或降序”,这么说如果大小颠倒需要swap