一道都不会做,希望能指出错误

召集各位虐菜(我)

题目

有一枚硬币, 你要抛这枚硬币, 在抛硬币之前你可以和 2n 个庄家下注, 对于第 1≤i≤n 个庄家, 你可以选择给他 1 块钱, 如果你抛的硬币最后正面朝上, 那么庄家会返还给你 ai 块钱(ai 不一定是整数), 否则就不给你了。 对于第 n+1≤i≤2n 个庄家, 你仍然可以选择给他 1 块钱, 如果你抛的硬币最后反面朝上, 那么庄家会返还给你 ai 块钱(ai 不一定是整数)。

输入格式

第一行一个数 n。
接下来 2n 个数, 第 i 个数表示 ai。 ai 最多有 4 位小数

输出格式

一行一个小数表示答案, 保留 4 位小数。

样例:

输入:
4
1.4 1.2 1.6 1.9 3.7 2 1.4 1.5
输出:
0.5000

code(0分代码)

#include
using namespace std;
int n,la=1,lb=1;
float a[50005],b[50005],proa,prob,ans,cnt=2;
bool cmp(float &a,float &b)
{
    return a > b;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
        scanf("%f",&a[i]);
    for(int i=1;i<=n;++i)
        scanf("%f",&b[i]);  
    sort(a+1,a+n+1,cmp);sort(b+1,b+n+1,cmp);
//    for(int i = 1;i <= n;++i)cout <" ";
//    cout <//    for(int i = 1;i <= n;++i)cout <" ";
//    cout <1];prob+=b[1];ans=max(min(proa-cnt,prob-cnt),ans);//profit a,b;cnt是成本
//    cout <<"ans:"<int flag=0;
//    cout<1]<<" "<while(la1;
         if(proa+a[la+1]<=prob){//proa+a[la+1]-cnt-1<=prob-cnt-1
             proa+=a[++la];++cnt;
//             cout << "la:"<"proa:"<//             cout<0;
             if(ans>min(proa-cnt,prob-cnt))break;
             else ans=min(proa-cnt,prob-cnt);
         }
         if(prob+b[lb+1]<=proa){
             prob+=b[++lb];++cnt;
//             cout << "lb:"<"prob:"<//             cout<0;
             if(ans>min(proa-cnt,prob-cnt))break;
             else ans=min(proa-cnt,prob-cnt);
         }
         if(flag)break;
     }
    printf("%.4f",ans);
    return 0;
}

请写出你的初始思路