1.3.1

来源:互联网 发布:广州旅游数据 编辑:程序博客网 时间:2024/04/30 05:31
#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 由大到小排序elsereturn 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;}