请问本题为什么小数据也过不了?

题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1679

问题相关代码
#include<iostream>
#include<algorithm>
#include<iomanip>
#define int long long
using namespace std;
int n,a[200005],b[200005];
double ans,now;
int min(int a,int b){return a<b?a:b;}
signed main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
        b[i]=b[i-1]+a[i];
    int m=min(20000,n);
    for(int i=1;i<=m;i++){
        for(int j=0;j<=min(m-i,i);j++){
            now=0;
            now+=b[i]-b[i-j];
            now+=a[i-j];
            now+=b[n]-b[n-j];
            now=1.0*now/(2*j+1);
            ans=max(ans,now-a[i]);
        }
    }cout<<fixed<<setprecision(5)<<ans;
    return 0;
}
运行结果及报错内容

20<n<=2000范围内正确,其他全部错误

我的解答思路和尝试过的方法

本题我是想让中位数尽可能地小,比中位数小的数尽可能贴近中位数,比中位数大的尽可能大,这样价值最高。但为什么最小的数据范围也错了?

我想要达到的结果

/AC本题/

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。