메모리
시간
1116 KB
0 ms
Code
#include <cstdio>
#include <algorithm>
using namespace std;
int main(int argc, char const *argv[])
{
int A,B,C,X,Y;
scanf("%d%d%d%d%d", &A, &B, &C, &X, &Y);
int result;
int price;
int max_ch;
if ((A + B) > (C * 2))
{
result = (min(X,Y) * 2) * C;
if (X == Y)
{
printf("%d", result);
return 0;
}
else
{
max_ch = max(X,Y) - min(X,Y);
price = X > Y ? A : B;
if (price > C * 2)
{
max_ch = max_ch * 2 * C;
result += max_ch;
}
else
result += max_ch * price;
}
}
else if (A > C * 2)
{
Y = X >= Y ? 0 : Y - X;
result = (C * X * 2) + (B * Y);
}
else if (B > C * 2)
{
X = Y >= X ? 0 : X - Y;
result = (C * Y * 2) + (A * X);
}
else
result = (A * X) + (B * Y);
printf("%d", result);
return 0;
}
C++
복사
문제 풀이
처음에는 a+b의 합이 c* 2 일때만 반반을 사고 남는 걸 한마리씩 구매하면 된다 생각했으나
남는 치킨의 가격이 c*2 보다 크다면 반반 주문 후 치킨이 남더라도 반반으로 모두 구매하는게 더 적은 금액으로 구매할 수 있다.
아래처럼 경우를 나누어 단순계산 하였다.
1.
반반 가격보다 X, Y 둘다 가격이 작을때
2.
X, Y 둘 중 하나가 반반보다 가격이 클때
3.
A + B 가 C보다 가격이 작고 더 마리수가 많은 종류의 가격이 반반 *2 보다 작을때
4.
A + B 가 C보다 가격이 작고 더 마리수가 많은 종류의 가격이 반반 *2 보다 클때