求助,第一个re,剩下的过了
查看原帖
求助,第一个re,剩下的过了
542863
新时代卷王楼主2021/10/17 18:11
#include<bits/stdc++.h>
using namespace std;
int n, t,w;
double v;
struct good
{
    int m;
    int v;
    good(int w=0,int y=0)
    {
        m = w;
        v = y;
    }
    


}a[100];

bool cmp(good& a, good& b)
{
    if (b.m == 0 || b.v == 0)
        return true;
    return a.v * b.m > a.m * b.v ? true : false;
}

int main()
{
    cin >> n >> t;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i].m >> a[i].v; 
    }
    
    sort(a, a + n,cmp);
    int j = 0;
    while (true)
    {
        if (w + a[j].m < t)
        {
            w += a[j].m;
            v += double(a[j].v);
            j++;
        }
        else if (w + a[j].m == t)
            break;
        else
        {
            v += (double(t) - w) * a[j ].v / a[j ].m;
            break;
        }
    }
    printf("%.2f", v);


    return 0;
}
2021/10/17 18:11
加载中...