题目描述
乐乐做好了一二三等奖奖品费用预算方案之后,决定到市场上具体咨询一下三种奖品的具体价格,发现各个商家的报价还是有差别的,乐乐决定哪家所有奖品总金额最少就在哪家购买,假设每家货源是充足的。乐乐咨询了n个店家,几乎跑遍了整个市场,才得到各个商家的最低报价清单。现在请你计算出乐乐会在哪家商家购买奖品以及费用是多少。
输入
共 n+1 行
第一行,有四个整数 n,x,y,z,数与数之间用一个空格隔开,n 表示乐乐咨询的商家数,x,y,z 分别表示要购买一等奖奖品数量、二等奖奖品数量、三等奖奖品数量。
接下来的 n 行,每行都有三个数,数与数之间用一个空格隔开,第 i+1 行分别表示编号为 i 的商家对一、二、三等奖奖品的报价(单价)
输出
共有两个整数,第一个数表示购买奖品的商家编号(如果有多家总费用最少,输出编号最小的商家),第二个数是购买奖品的总费用。
样例输入 Copy
3 1 2 3
70 50 30
60 40 20
80 55 33
样例输出 Copy
2 200
提示
【样例解释】
乐乐咨询了 3 个商家,打算购买一二三等奖奖品数量分别是 1 个、2 个、3 个,编号为 1 的商家一二三等奖奖品报价分别是 70、50、30 元,编号为 2 的商家报价分别是 60、40、20 元,编号为 3 的商家报价分别是 80、55、20 元,乐乐在编号为 2 的商家购买总费用最低,为200 元。
【数据范围】
40%数据:1≤n≤5000
100%数据:1≤n≤100000,1≤x,y,z≤1000,奖品报价都是 1000 范围以内的正整数。
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int n,x,y,z,i,min=1000000,n1,n2,n3,temp,t=0;
cin>>n>>x>>y>>z;
for(i=0;i<n;i++){
temp=0;
cin>>n1>>n2>>n3;
temp+=n1*x+n2*y+n3*z;
if(temp<min){
min=temp;
t=i+1;
}
}
cout<<t<<" "<<min;
return 0;
}
void main()
{
printf("请输入商家数量及一二三等奖数量,用空格分隔:");
int i,n,x,y,z,m=0,min=0,one,two,three;
scanf("%d %d %d %d",&n,&x,&y,&z);
for(i=0; i <n; i++)
{
printf("请输入第%d个商家一二三等奖的价格,用空格分隔:",i+1);
scanf("%d %d %d",&one,&two,&three);
if(i==0)
min = one*x+two*y+three*z;
else if(min > one*x+two*y+three*z)
{
min = one*x+two*y+three*z;
m = i;
}
}
//
printf("最便宜的商家是第%d个,总价格为:%d",m+1,min);
}