问题 6380 --烧菜(cook.cpp)

6380: 烧菜(cook.cpp)

题目描述

小X正在指挥M个机器人做一道家常菜:白灼青菜。 把一根青菜烧成菜肴需要两个步骤:洗菜和水煮。显然,一根青菜不可能同时被清洗和水煮,也不可能先被水煮后被清洗。 现在小X告诉你他是怎么指挥的。每当一个机器人空下来: - 如果有青菜还没被清洗,就让这个机器人清洗这根青菜 - 否则如果有青菜还没被水煮,就让这个机器人水煮这根青菜 - 都没有就让这个机器人关机 现在一共需要把N根青菜烧成菜肴,任何一个机器人清洗都要花A分钟,水煮要花B 分钟。小X想请你告诉他多少分钟后所有菜能被烧好。

输入

第一行4个正整数N,M,A,B,含义见问题描述。

输出

输出1行包含一个整数,表示多少分钟后所有菜能被烧好。

样例输入输出

输入#1 复制
3 2 9 5
输出#1 复制
23

提示

【样例1解释】 为了方便说明,把机器人标号为1号机器人和2号机器人;把青菜标号为1号、2号、3号青菜。实际上,机器人间是没有区别的,青菜间也是没有区别的。 - 第0分钟,1号机器人开始洗1号青菜,2号机器人开始洗2号青菜。 - 第9分钟,1号机器人开始洗3号青菜,2号机器人开始煮1号青菜。 - 第14分钟,2号机器人开始煮2号青菜。 - 第18分钟,1号机器人开始煮3号青菜。 - 第19分钟,2号机器人关机。 - 第23分钟,所有菜都被烧好了,1号机器人关机。 【数据范围】 本题共有20个测试点,每个测试点5分。 - 对于测试点1-10:1<=N,M,A,B<=50 - 对于测试点11-20:1<=N,M,A,B<=2000 - 对于测试点1,2,11,12:M>N,即机器人比青菜多 - 对于测试点3,4,13,14:M=1,即只有1个机器人 - 对于测试点5,6,15,16:A=B,即两个步骤需要的时间相同
序号 标题 作者 发表时间 费用 订购数 操作