1014: 奇怪的餐廳(2015年中南大學研究生復試機試題 )
阿新 • • 發佈:2019-03-17
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年中南大學研究生復試機試題 )