# 最小花费

题目描述

乐乐做好了一二三等奖奖品费用预算方案之后,决定到市场上具体咨询一下三种奖品的具体价格,发现各个商家的报价还是有差别的,乐乐决定哪家所有奖品总金额最少就在哪家购买,假设每家货源是充足的。乐乐咨询了n个店家,几乎跑遍了整个市场,才得到各个商家的最低报价清单。现在请你计算出乐乐会在哪家商家购买奖品以及费用是多少。 输入

共 n+1 行 

第一行,有四个整数 n,x,y,z,数与数之间用一个空格隔开,n 表示乐乐咨询的商家数,x,y,z 分别表示要购买一等奖奖品数量、二等奖奖品数量、三等奖奖品数量。 

接下来的 n 行,每行都有三个数,数与数之间用一个空格隔开,第 i+1 行分别表示编号为 i 的商家对一、二、三等奖奖品的报价(单价)  输出

共有两个整数,第一个数表示购买奖品的商家编号(如果有多家总费用最少,输出编号最小的商家),第二个数是购买奖品的总费用。  样例输入

3 1 2 3
70 50 30
60 40 20
80 55 33

样例输出

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 范围以内的正整数。

以下程序实现了这一功能,请你填补空白处的内容: ```cpp #include #include 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; __________________ } cout << t << " " << min; return 0; } ``` ## template ```cpp #include #include 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; } ``` ## 答案 ```cpp if (temp < min) { min = temp; t = i + 1; } ``` ## 选项 ### A ```cpp if (temp > min) { min = temp; t = i + 1; } ``` ### B ```cpp if (temp < min) { min = temp; t = i - 1; } ``` ### C ```cpp if (temp > min) { min = temp; t = i - 1; } ```