月饼

题目详情 - L2-003 月饼 (25 分) (pintia.cn)

23分,有两分段错误不知道错哪了,不想debug了...

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
struct mess{
    double a,b,w;
}v[N];
bool cmp(mess x,mess y)
{
    return x.w>y.w;
}
int main(){
    int n,s;
    cin>>n>>s;
    for(int i=1;i<=n;i++) cin>>v[i].a;
    for(int i=1;i<=n;i++) cin>>v[i].b;
    for(int i=1;i<=n;i++) v[i].w=v[i].b/v[i].a*1.0;    
    sort(v+1,v+n+1,cmp);
//    for(int i=1;i<=n;i++) cout<<v[i].a<<" "<<v[i].b<<" "<<v[i].w<<endl;
    double sum=0,cnt=0;
    int k=1;
    while(1)
    {
        sum+=v[k].b;
        cnt+=v[k].a;
    //    cout<<sum<<" "<<cnt<<endl;
        if(cnt>s)
        {
            sum-=v[k].b;
            cnt-=v[k].a;
            int x=s-cnt;
            if(x<=v[k].a)
            {
                sum+=v[k].w*x;
                break;                
            }
        }
        k++;
    }
    printf("%.2lf",sum);
    return 0;
}

 

posted @ 2022-04-21 09:13  小志61314  阅读(35)  评论(0)    收藏  举报