다섯 개의 숫자 b, p, f, h 및 c가 있다고 가정합니다. 레스토랑에는 두 가지 종류의 버거가 있습니다. 햄버거와 치킨버거입니다. 햄버거에는 만두 2개와 소고기 패티가 필요하고 치킨 버거에는 만두 2개와 치킨 커틀릿이 필요합니다. 우리는 b 번, p 쇠고기 패티, f 치킨 커틀릿이 있습니다. 우리는 h 루피에 햄버거와 c 루피에 치킨 버거를 판매하려고합니다. 얻을 수 있는 최대 이익을 찾아야 합니다.
따라서 입력이 b =7과 같으면; 피 =5; f =2; h =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