014: 奇怪的餐厅
时间限制: 1 Sec 内存限制: 128 MB提交: 172 解决: 60[] [] [] [命题人:外部导入]
题目描述
鲁大师和他的朋友经常去一家奇怪的餐厅,为什么说奇怪呢,一是餐厅提供的菜品比较奇怪,二是餐厅的付费规则比较奇怪,每个人有不同的折扣上限(单人从总结里折算的最高金额),超过折扣上限的部分原价付费(N个人可以每人出一部分),这次鲁大师和魏然层风以及朋友一共N个人去这家餐厅吃饭,他们点的菜品总金额为T,现在告诉你每个人的折扣率z和折扣上限H,请告诉他们最少需要支付多少钱?
输入
输入数据有多组,每组占N+1行,第一行是N和T,接下来N行,每行两个数字z和H(0<N<100)。
输出
对于每组输入数据,输出一行,对应一个要求的答案。答案向下取整。
样例输入
2 1000.7 700.6 503 5000.6 1000.8 2000.7 1001 1000.6 100
样例输出
6539060
#include#include using namespace std;double discount33[100];//对应折扣 int total33[100];//对应打折上限 /*总结:要清楚理解题意,并把可能的情况都考虑进去,比如此题的,折扣用完的情况 */int main(){ int N,T; while(cin>>N>>T){ for(int i=0;i >discount33[i]>>total33[i]; } //对折扣顺序进行排序 for(int i=0;i discount33[j+1]){ double temp=discount33[j]; discount33[j]=discount33[j+1]; discount33[j+1]=temp; int temp1=total33[j]; total33[j]=total33[j+1]; total33[j+1]=temp1; } } } //计算价格,从折扣高的 开始计算 int totalMoney=0; int curMoney=T; for(int k=0;k total33[k]){ totalMoney+=total33[k]*discount33[k]; curMoney-=total33[k]; //cout<<"curMoney: "< <<" totalMoney: "< <