#include <fstream> #include <iostream> #include <vector> #include <algorithm> using namespace std; //数据存取结构 struct Mouse { double J; double F; double a; }; //自定义排序比较规则 bool Comp(const Mouse &d1, const Mouse &d2) { //按 a 由大到小排序 if (d1.a != d2.a) return d1.a > d2.a; //按 F 由大到小排序 else return d1.F < d2.F; } int main(int argc, char* argv[]) { ifstream cin("/home/q/Desktop/a.txt"); vector<Mouse> v; Mouse mouse; int m, n, i; //三位输出精度 cout.precision(3); double sum; while (cin >> m >> n) { if (m == -1 && n == -1) break;//读取结束 v.clear(); sum = 0.0; //读入数据到向量中 for (i = 0; i < n; i++) { cin >> mouse.J >> mouse.F; mouse.a = mouse.J / mouse.F; v.push_back(mouse);//往向量里增加一元素 } //使用自定义排序规则 Comp 给向量排序 sort(v.begin(), v.end(), Comp); //计算交换数量 for (i = 0; i < (int)v.size(); i++) { if (m >= v[i].F) { sum = sum + v[i].J; m = m - v[i].F; } else { sum = sum + m * v[i].a; break; } } //定点三位精度输出数据 cout << fixed << sum << endl; } return 0; }
1.3.1
最新推荐文章于 2024-09-06 22:52:54 发布