#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
long long x;
cin >> n >> x;
vector<int> arr1(n);
for (int i = 0; i < n; i++) {
cin >> arr1[i];
}
vector<int> arr2(n);
for (int i = 0; i < n; i++) {
cin >> arr2[i];
}
// 比较每种货物供应商的价格,让更便宜的胜出。
vector<int> arr3(n);
for (int i = 0; i < n; i++) {
if (arr1[i] >= arr2[i]) {
arr3[i] = arr2[i];
}else {
arr3[i] = arr1[i];
}
}
long long y = 0;
for (int i = 0; i < n; i++) {
y += arr3[i];
}
cout << min(x, y) << endl;
}
// 64 位输出请用 printf("%lld")
- 分类讨论:1)不拆,直接网购最省钱,那么输出x。2)拆,对于每种货物,都采购AB中最便宜的。
- 统计最低价格:先把A和B中每个货物的最低价格都放到一个数组里,然后对这个数组求和。
- 比较确定最终输出:用min()来比较。
- 两种求和方式:第一种是上面的遍历求和。第二种是用accumulate()函数求和——int y = accumulate(arr.begin(), arr.end());