到底哪错了,求求大佬帮我调下
查看原帖
到底哪错了,求求大佬帮我调下
1355777
Dzc1317楼主2024/11/13 20:35

只有80分

#include<bits/stdc++.h>
using namespace std;
int read(){
    int a=0,k=1;
    char c=getchar();
    while(!isdigit(c)){
        if(c=='-')
            k=-1;
        c=getchar();
    }
    while(isdigit(c)){
        a=a*10+c-'0';
        c=getchar();
    }
    return a*k;
}
struct you{
    double w,v;
    double d;
}a[100005];
bool cmp(you x,you y){
    return x.d>y.d;
}
double ans;
int main(){
    int n=read();
    double W;
    scanf("%lf",&W);
    for(int i=1;i<=n;i++)
    {
        scanf("%lf%lf",&a[i].w,&a[i].v);
        a[i].d=a[i].v/a[i].w;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        if(a[i].w>W){
            ans+=W*a[i].d;
            printf("%.2lf",ans);
            break;
        }
        else{
            ans+=a[i].v;
            W-=a[i].w;
        }
    }
    return 0;
}
2024/11/13 20:35
加载中...