View Code of Problem 4038

#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.


Back to problem 4038