#include <algorithm> #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <queue> #include <vector> using namespace std; struct S{ double cube, value,vpc; }; bool cmp(S a,S b){ return a.vpc > b.vpc; } int main(void) { int n, cube; cin >> n >> cube; S s[n]; for (int i = 0; i < n;i++){ cin >> s[i].cube >> s[i].value; s[i].vpc = s[i].value / s[i].cube; } sort(s, s + n, cmp); double sum = 0; for (int i = 0; i < n;i++){ if(cube > s[i].cube){ cube -= s[i].cube; sum += s[i].value; }else{ sum += s[i].vpc * cube; cube = 0; break; } } printf("%.2lf\n", sum); } |
Double click to view unformatted code.