Cho b, p, f, h, c. Có b ổ bánh mì, p miếng bò, f miếng gà. Bánh mì kẹp bò: 2 ổ + 1 bò, bán h. Bánh mì kẹp gà: 2 ổ + 1 gà, bán c. Tối đa hóa lợi nhuận.
Ví dụ
Với b=7, p=5, f=2, h=10, c=12, đầu ra 34. Làm 1 bò (10) + 2 gà (24) = 34.
Giải thuật
b /= 2 (số cặp ổ). Ưu tiên làm loại lợi nhuận cao hơn: nếu h < c hoán đổi. Làm tối đa min(b, p) bánh bò. Dùng ổ còn lại làm bánh gà: min(max(b-p,0), f).
Mã C++
#include <bits/stdc++.h>
using namespace std;
int solve(int b, int p, int f, int h, int c) {
int res = 0;
b /= 2;
if (h < c) {
swap(p, f);
swap(h, c);
}
res += h * min(b, p) + c * min(max(b - p, 0), f);
return res;
}
int main() {
int b = 7, p = 5, f = 2, h = 10, c = 12;
cout << solve(b, p, f, h, c) << endl;
}
Đầu vào / Đầu ra
Input: 7, 5, 2, 10, 12
Output: 34