@[ycyy](/user/877089)
①去掉`cout<<endl;`,否则第一行是空的,OJ进行逐个字符匹配的时候是不能判对的。
②`sort(a,a+m-1,cmp);//从小到大排`应当放到`for(int j=0;j<m;j++)`下面,虽然对于本题而言可能时间上过得去,但是在要求更高的大部分题里面就已经寄了。
另外 `sort(begin,end,cmp)`是从 `begin`到`end`但是取不到`end`的元素进行排序,用区间表示是$[begin,end)$,称为左闭右开的,STL和一些其他库函数基本均采用这一标准,根据题意,需要改为`sort(a,a+m,cmp);`,否则排半天序,最后一个元素也不参与进来。
### 改后的代码,可供参考,已提交AC
```cpp
#include<iostream>
#include<iomanip>
#include<algorithm>
using namespace std;
bool cmp(int i,int j)
{
return i>j;
}
int main()
{
int n,m,k,sum;
double p=0,sum1=0,max=0;
int a[10000];
cin>>n>>m;
k=m-2;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[j];
}
sort(a,a+m,cmp);//从小到大排
for(sum=1;sum<m-1;sum++)
{
sum1+=a[sum];
}//最高和最低去掉
p=sum1/k;
if(p>max){max=p;}
p=0;
sum1=0;
}
cout<<setprecision(2)<<fixed<<max;
system("pause");
return 0;
}
```
by Terrible @ 2023-03-23 15:49:59
@[Terrible](/user/195942) 测试正确,感谢
by ycyy @ 2023-03-23 19:27:03