PAT 1070 Mooncake

题目意思能搞成这样我也是服了这个女人了

#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int N = 0;
    double D = 0;
    scanf("%d%lf", &N, &D);
    vector<pair<double, double> > base(N);
    vector<double> amount(N);
    vector<double> price(N);
    double tmp;
    for (int i=0; i<N; i++) {
        scanf("%lf", &amount[i]);
    }
    for (int i=0; i<N; i++) {
        scanf("%lf", &price[i]);
        base[i].first = amount[i] / price[i];
        base[i].second= i;
    }
    
    sort(base.begin(), base.end());
    
    double cur = 0;
    double mon = 0;
    int i = 0;

    while(cur < D && i < N) {
        int idx = base[i].second;
        double use = amount[idx];
        if ((use + cur) >= D) use = D - cur;
        mon += use / amount[idx] * price[idx];
        cur += use;
        i++;
    }
    printf("%.2lf", mon);
    return 0;
}
原文地址:https://www.cnblogs.com/lailailai/p/4091009.html