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;

}

 

你可能感兴趣的:(pat)