สมมติว่าเรามีตัวเลขห้าตัว b, p, f, h และ c มีเบอร์เกอร์สองประเภทในร้านอาหาร เหล่านี้เป็นแฮมเบอร์เกอร์และเบอร์เกอร์ไก่ แฮมเบอร์เกอร์ต้องการขนมปังสองก้อนและขนมพายเนื้อ สำหรับเบอร์เกอร์ไก่ เราต้องการขนมปังสองชิ้นและชิ้นไก่ชิ้นหนึ่ง เรามี บี บัน พี พายเนื้อ เอฟ ไก่ทอด เรากำลังพยายามขายแฮมเบอร์เกอร์ในราคารูปีและเบอร์เกอร์ไก่ในราคารูปีซี เราต้องหากำไรสูงสุดที่เราจะได้รับ
ดังนั้นหากอินพุตเป็นเหมือน b =7; พี =5; ฉ =2; ชั่วโมง =10; c =12 ผลลัพธ์จะเป็น 34 เพราะสำหรับแฮมเบอร์เกอร์หนึ่งชิ้นและเบอร์เกอร์ไก่สองตัว รายได้ 1*10 + 2*12 =34
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
res := 0 b := b / 2 if h < c, then: swap p and f swap h and c res := res + h * (minimum of b and p) + c * minimum of the (maximum of (b - p) and 0) and f) return res
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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;
int p = 5;
int f = 2;
int h = 10;
int c = 12;
cout << solve(b, p, f, h, c) << endl;
} อินพุต
7, 5, 2, 10, 12
ผลลัพธ์
34