十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组中的成绩统计问题
因为完全是暴力解法,所以只想着拿部分分,不管超时的部分,但是不管是从洛谷还是蓝桥杯官网都有答案运行错误的测试案例,如图

错误原因是本应输出整数,却输出了不能满足条件的 −1,但是找了好多测试用例都不知道是哪里错的,希望有能解决问题的朋友帮忙解答! 。
#include <iostream>
#include<algorithm>
#include<cmath>
using namespace std;
//是充分条件,选最少的
int main()
{
//先读取数据
int judge=0; //0代表不行,1代表可以
int n;
int k;
long long int T;
cin>>n>>k>>T;
int allGrade[100000 + 100];
for(int i=0;i<n;i++){
cin>>allGrade[i];
}
long double sumGrade=0;
long double averGrade=0;
double fangcha=0;
//就一个个输入检查,看是否满足
//起码要比k大
//n<k,共三个特殊情况
if(n<k){
judge=1;
cout<<-1;
return 0;
}
//k个数可以
for(int i=0;i<k;i++){
sumGrade+=allGrade[i];
}
averGrade=sumGrade/k;
for(int j=0;j<k;j++){
fangcha+=(allGrade[j]-averGrade)*(allGrade[j]-averGrade);
}
fangcha/=k;
if(fangcha<T){
cout<<k;
judge=1;
}
//k个数不可以
else{
//又分为比平均数大还是小的问题
//第一种:中间的数比平均数大,就找更小的
int mid;
if(k%2==0){
mid=k/2;
}
else{
mid=(k+1)/2;
}
//------------------------------------------------------
if(allGrade[mid]>=averGrade){
//选新的数中其中最小的那个
//给前k个数排个序,这样后面不费劲
sort(allGrade,allGrade+k);
//开始判断后面的数,一个大循环
for(int i=k;i<n;i++){ //这里的i都是下标
fangcha=0;//方差需要重算,每次都重置
averGrade=0;
sumGrade=0;
if(allGrade[k]>=allGrade[k-1]){
continue;
}
//这里的否则可以用来判断哦
else{
allGrade[k]=allGrade[i];
sort(allGrade,allGrade+k+1);
//更新完了前k个数,再检验一次
for(int j=0;j<k;j++){
sumGrade+=allGrade[j];
}
averGrade=sumGrade/k;
for(int j=0;j<k;j++){
double t=allGrade[j]-averGrade;
fangcha+=t*t;
}
fangcha/=k;
if(fangcha<T){
cout<<i+1;
judge=1;
break;
}
}
}
if(judge==0)
cout<<-1;
}
//---------------------------------------------------------------------
else{
//选新的数中其中最大的那个
//给前k个数排个序,这样后面不费劲
sort(allGrade,allGrade+k,greater<int>());
//开始判断后面的数,一个大循环
for(int i=k;i<=n;i++){ //这里的i都是下标
fangcha=0;//方差需要重算,每次都重置
averGrade=0;
sumGrade=0;
if(allGrade[k]<allGrade[k-1]){
continue;
}
//这里的否则可以用来判断哦
else{
allGrade[k]=allGrade[i];
sort(allGrade,allGrade+k+1,greater<int>());
//更新完了前k个数,再检验一次
for(int j=0;j<k;j++){
sumGrade+=allGrade[j];
}
averGrade=sumGrade/k;
for(int j=0;j<k;j++){
double t=allGrade[j]-averGrade;
fangcha+=t*t;
}
fangcha/=k;
if(fangcha<T){
cout<<i+1;
judge=1;
break;
}
}
}
if(judge==0)
cout<<-1;
}
}
return 0;
}