1. 程式人生 > >1014: 奇怪的餐廳(2015年中南大學研究生復試機試題 )

1014: 奇怪的餐廳(2015年中南大學研究生復試機試題 )

cin 付費 打折 內存限制 大學 tput amp main submit

014: 奇怪的餐廳

時間限制: 1 Sec 內存限制: 128 MB
提交: 172 解決: 60
[提交] [狀態] [討論版] [命題人:外部導入]

題目描述

魯大師和他的朋友經常去一家奇怪的餐廳,為什麽說奇怪呢,一是餐廳提供的菜品比較奇怪,二是餐廳的付費規則比較奇怪,每個人有不同的折扣上限(單人從總結裏折算的最高金額),超過折扣上限的部分原價付費(N個人可以每人出一部分),這次魯大師和魏然層風以及朋友一共N個人去這家餐廳吃飯,他們點的菜品總金額為T,現在告訴你每個人的折扣率z和折扣上限H,請告訴他們最少需要支付多少錢?

輸入

輸入數據有多組,每組占N+1行,第一行是N和T,接下來N行,每行兩個數字z和H(0<N<100)。

輸出

對於每組輸入數據,輸出一行,對應一個要求的答案。答案向下取整。

樣例輸入

2 100
0.7 70
0.6 50
3 500
0.6 100
0.8 200
0.7 100
1 100
0.6 100

樣例輸出

65
390
60

#include<iostream>
#include<math.h>
using namespace std;

double discount33[100];//對應折扣 
int total33[100];//對應打折上限 
/*總結:要清楚理解題意,並把可能的情況都考慮進去,比如此題的,折扣用完的情況 
*/ int main(){ int N,T; while(cin>>N>>T){ for(int i=0;i<N;i++){ cin>>discount33[i]>>total33[i]; } //對折扣順序進行排序 for(int i=0;i<N;i++){ for(int j=0;j<N-i-1;j++){ if(discount33[j]>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<N;k++){ //cout<<curMoney<<"**"<<total33[k]<<endl; if(curMoney>total33[k]){ totalMoney+=total33[k]*discount33[k]; curMoney-=total33[k]; //cout<<"curMoney: "<<curMoney<<" totalMoney: "<<totalMoney<<endl; } else{//已經結算清楚了 totalMoney+=curMoney*discount33[k]; curMoney=0; //cout<<"curMoney: "<<curMoney<<" totalMoney: "<<totalMoney<<endl; break; } } //有可能折扣用完了,還沒結算清楚 if(curMoney!=0){ totalMoney+=curMoney; } cout<<totalMoney<<endl; } return 0; }

 

1014: 奇怪的餐廳(2015年中南大學研究生復試機試題 )