Q1009 FatMouse' Trade C++
2016-06-02 21:31
351 查看
问题描述:
Problem Description
FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.
The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of
cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.
Input
The input consists of multiple test cases. Each test case begins with a line containing two non-negative integers M and N. Then N lines follow, each contains two non-negative integers J[i] and F[i] respectively. The last test case is followed by two -1's. All
integers are not greater than 1000.
Output
For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans that FatMouse can obtain.
Sample Input
Sample Output
Problem Description
FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.
The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of cat food. FatMouse does not have to trade for all the JavaBeans in the room, instead, he may get J[i]* a% pounds of JavaBeans if he pays F[i]* a% pounds of
cat food. Here a is a real number. Now he is assigning this homework to you: tell him the maximum amount of JavaBeans he can obtain.
Input
The input consists of multiple test cases. Each test case begins with a line containing two non-negative integers M and N. Then N lines follow, each contains two non-negative integers J[i] and F[i] respectively. The last test case is followed by two -1's. All
integers are not greater than 1000.
Output
For each test case, print in a single line a real number accurate up to 3 decimal places, which is the maximum amount of JavaBeans that FatMouse can obtain.
Sample Input
5 3 7 2 4 3 5 2 20 3 25 18 24 15 15 10 -1 -1
Sample Output
13.333 31.500
#include <iostream> #include <algorithm> #include <vector> #include <iomanip> using namespace std; struct food { double j, f, percent; }; bool cmp(food a, food b) { return a.percent > b.percent; } int main() { double M, N; while(cin >> M >> N && M != -1 || N != -1) { double final = 0; food temp; vector<food> v; for (int i = 0; i < N; i++) { cin >> temp.j >> temp.f; temp.percent = temp.j / temp.f; v.push_back(temp); } sort(v.begin(),v.end(),cmp); int count = 0; while(M>0 && count < N) { if(v[count].f <= M) { M -= v[count].f; final += v[count].j; count++; } else { final += M * v[count].percent; count++; M = 0; } } cout << setprecision(3) << fixed << final << endl; } return 0; }
相关文章推荐
- C++走向远洋——61(项目一、排序函数模板)
- C++走向远洋——60(十四周阅读程序、STL中的简单容器和迭代器)
- c++incline函数
- c++和java的区别
- 【C/C++】产生随机数
- 【C++】 ofstream列对齐和设置小数点精度
- C++的异常处理 & Objc的异常处理
- C++走向远洋——60(项目四、立体类族共有的抽象类)
- Windows7下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
- 参考小白书上用c++采用结构体重载的大数类模版
- C++ Primer 第五版 部分课后题答案
- c++ 类基本概念易错点
- 你精通C语言吗?
- 【C/C++】获取当前系统时间
- 关于new和delete中的一些问题
- 动态链接库
- C++的标准模板库(STL)简介
- C++作业 7
- C++之指向数据成员的指针和指向成员函数的指针
- C++第七次实验(最大公约和和最小公倍数)