感觉没有问题,但是第二个测试点WA。麻烦各位大佬帮忙看看是哪里的问题??
#include<iostream>
#include<algorithm>
#include <unordered_map>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
int* weight = new int[n];
int* value = new int[n];
unordered_map<double, int> quality;
for (int i = 0; i < n; i++){
cin >> weight[i] >> value[i];
quality[double(value[i]) / weight[i]] = i;
}
double total_value = 0;
auto cmp = [](const pair<double, int> a, const pair<double, int> b){return a.first<b.first; };
while (m && !quality.empty())
{
auto it = max_element(quality.begin(), quality.end(), cmp);
int idx = it->second;
total_value += it->first * min(m, weight[idx]);
m -= min(m, weight[idx]);
quality.erase(it);
}
printf("%.2lf", total_value);
}