|시간 제한||메모리 제한||제출||정답||맞은 사람||정답 비율|
|2 초||512 MB||0||0||0||0.000%|
You need to compute a sequence of actions in order to maximize
cash earned in a tutor simulation game. The actions involve earning
cash from tuition (TEACH), studying in college to increase your
knowledge (TRAIN), and buying books (BUY). The TRAIN action allows you to increase tuition income. The BUY action allows you to reduce time units consumed for each TRAIN action. Each of these actions consumes time units and there are only
maxTimeUnits available for work.
Like all games, the puzzle difficulty depends on the game variables and certain rules. For this task, there are 4 game variables and 5 game rules. Value ranges are provided where appropriate.
maxTimeUnits(10 - 1000): The maximum number of time units in the simulation game.
learningRate(1, 2, 4, or 8): Scales down the time units consumed by a TRAIN action, based on the number of
bookin your possession.
paybackRate(5, 10, or 20): Scales up the tuition
incomeearned from a TEACH action, based on the
bookCost: An array of 4 integers in non decreasing order where the i-th integer is the cost of the i-th book. (The cost of each book is in the range of \$5 - \$500).
cashis 0; your
knowledgeis 0; and you have 0
maxTimeUnits. Your aim is to obtain as much
incomeper TEACH action. That is, the more
knowledgethat you have, the higher your income will be.
income = 10 + min(20, knowledge) * paybackRate
knowledgelevel by 1 unit. The formula below gives the
trainingTimeper TRAIN action. That is, the more
bookor the higher
learningRatethat you have, the lower your
trainingTime = max(1, (int)(8 / max(1, book * learningRate)))
bookCost[i]. As there are at most 4 books, you can perform at most 4 BUY actions.
Write a program that reads in the game variable values (see sample input), and determines the best possible sequence of actions. You need to implement a planner so that your
cash is maximum at a certain time unit
t ∈ [0 .. maxTimeUnits]. However, you should not violate the following important constraints:
maxTimeUnits, when choosing an action.
cashat any point; i.e. you must be able to pay for any TRAIN or BUY action.
For example, suppose
paybackRate are 13, 8, and 20, respectively. Assume the cost of the 4 books are \$5, \$50, \$100, and \$200.
Since you have 13 time units, a simple solution is to perform TEACH 6 times. You can already get 6∗(10+min(20, 0)∗20) = 6∗10 = \$60. However, this is not the best answer (you will not get any marks by giving this answer). The optimal answer for this test case has
cash = \$95 and shown below:
|0||0||0||0||start of simulation|
|2||5||0||1||BUY (the 0-th book, 5\$, no change in t)|
|7||5||1||1||TRAIN (we have 1 book,
The input (from standard input) consists of two lines. The first line contains 3 integers, which are the
paybackRate. The second input line contains 4 integers where the i-th integer is the cost of the i-th book.
The required output (to standard output), consists of a single number, specifying the maximum
cash that you can gain.
13 8 20 5 50 100 200