分值 : 25 难度 : 简单题 思路 : 结构体排序 坑点 : 不管是单价还是数量,都一定要是double类型
1234567891011121314151617181920212223242526272829303132333435363738394041
#include <iostream>#include <algorithm>using namespace std ;#define Max_ 9999999typedef struct Node{ double amount ; double prince ; double avg ;}Nodes;Nodes data[1001];bool cmp(Node a ,Node b){ return a.prince/a.amount > b.prince/b.amount ;}int main() { int N ; double G ; cin >> N >>G ; for(int i = 0 ; i < N ; i++) cin >>data[i].amount; for(int i = 0 ; i< N ; i++) cin >>data[i].prince; sort(data,data+N ,cmp) ; double sum = 0 ; for(int i = 0 ;i< N ; i++) { if(G <data[i].amount) { sum += G* (data[i].prince/data[i].amount) ; break ; } else { sum += data[i].prince ; G -= data[i].amount ; } } printf("%.2lf\n", sum) ; //cout <<sum <<endl ;}