# C# – CodeForces – A. Mister B and Book Reading

Codeforces has easy and tough questions. However, the easy are not always easy, but the tough are always tough. Thus, after writing the Excel article here for Sumproduct, I have decided to go a bit easy and start with the first problem of Round 421. It should be a simple implementation problem, but still good enough for a warm up.

The problem looks like this:

At first day Mister B read v0 pages, but after that he started to speed up. Every day, starting from the second, he read a pages more than on the previous day (at first day he read v0 pages, at second — v0 + a pages, at third — v0 + 2a pages, and so on). But Mister B is just a human, so he physically wasn’t able to read more than v1 pages per day.

Also, to refresh his memory, every day, starting from the second, Mister B had to reread last l pages he read on the previous day. Mister B finished the book when he read the last page for the first time.

Help Mister B to calculate how many days he needed to finish the book.

Input

First and only line contains five space-separated integers: cv0v1a and l (1 ≤ c ≤ 10000 ≤ l < v0 ≤ v1 ≤ 10000 ≤ a ≤ 1000) — the length of the book in pages, the initial reading speed, the maximum reading speed, the acceleration in reading speed and the number of pages for rereading.

Output

Print one integer — the number of days Mister B needed to finish the book.

The trick here is to understand the solution – the guy should keep on reading until he has read the whole book. That’s an obvious While(True) loop. Concerning the acceleration, there is an easy way to do it, if you have some OOP experience – simply always accelerate and make a check for the maximum acceleration. If it is above the maximum, then assign the maximum. Last but not least – we have 2 cases – the first day and every other day. Thus a condition would work there well. Pretty much, my whole code is explained in the previous 3 sentences. Enjoy it:

Cheers! 🙂

Tagged with: ,