はじめに
このシリーズではレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】でまとめられている100問をPythonで解いています。
問題
AtCoder Beginner Contest 095 C - Half and Half
ポイント
この問題は全探索を用いて解くことができます。
ABピザを買う枚数を全探索します。ABピザは2枚でAピザ1枚、Bピザ1枚となるのでABピザの買う枚数の
パターンは、0枚からAピザBピザの必要枚数の内大きい方の枚数x2までの間で2枚ずつ増えていきます。
コード
def main():
A, B, C, X, Y = map(int, input().split(" "))
result = float('inf')
for i in range(0, max(X, Y) * 2 + 1, 2): # ABピザを買う枚数を全探索
price_c = C * i
x = max(X - i // 2, 0) # ABピザをi枚買った時のAピザの残り必要枚数
y = max(Y - i // 2, 0) # ABピザをi枚買った時のBピザの残り必要枚数
tmp = A * x + B * y + price_c # 残りの必要なピザを買った場合のトータル金額
if tmp < result:
result = tmp
print(result)
if __name__ == '__main__':
main()