小中大虽然是水题,但要考虑到输出要分为小数和整数,这个错误会导致有70分和100分的差别。
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
int main(){
int n,a;
vector<int>v;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d",&a);
if(i==0)
v.push_back(a);
if((n%2==1&&i==n/2)||(n%2==0&&i==n/2-1))//基数或偶数前一个
v.push_back(a);
if(n%2==0&&i==n/2)//偶数
v.push_back(a);
if(i==n-1)
v.push_back(a);
}
sort(v.begin(),v.end());//升序排序,从小到大;
printf("%d ",v.back());
float t=(v.size()+1)*1.0/2;
if(n%2==0)//偶数数组
if((v[1]+v[2])%2==0)
printf("%d ",(v[1]+v[2])/2);
else
printf("%.1f ",(v[1]*1.0+v[2])/2);
else//奇数数组
printf("%d ",v[1]);
printf("%d",v.front());
return 0;
}