P4
Question
Fiona commutes to work each day. If there is no rush-hour traffic, her commute time is 2 hours. However, there is often rush-hour traffic. Specifically, rush-hour traffic occurs from 07:00 (7am) until 10:00 (10am) in the morning and 15:00 (3pm) until 19:00 (7pm) in the afternoon. During rush-hour traffic, her speed is reduced by half.
She leaves either on the hour (at XX:00), 20 minutes past the hour (at XX:20), or 40 minutes past the hour (at XX:40).
Given Fiona's departure time, at what time does she arrive at work?
Input Specification
The input will be one line, which contains an expression of the form HH:MM, in which HH is one of the 24 starting hours (00, 01, ..., 23) and MM is one of the three possible departure minute times (00, 20, 40).
Output Specification
Output the time of Fiona's arrival, in the form HH:MM.
Sample Input 1
05:00Output for Sample Input 1
07:00Explanation for Output for Sample Input 1
Fiona does not encounter any rush-hour traffic, and leaving at 5am, she arrives at exactly 7am.
Sample Input 2
07:00Output for Sample Input 2
10:30Explanation for Output for Sample Input 2
Fiona drives for 3 hours in rush-hour traffic, but only travels as far as she normally would after driving for 1.5 hours. During the final 30 minutes (0.5 hours) she is driving in non-rush-hour traffic.
Sample Input 3
23:20Output for Sample Input 3
01:20Explanation for Output for Sample Input 3
Fiona leaves at 11:20pm, and with non-rush-hour traffic, it takes two hours to travel, so she arrives at 1:20am the next day.
Answer
Convert the starting time into total minutes.
The trip requires 120 minutes, but during rush hours (7:00–10:00 and 15:00–19:00), the driving speed is halved, so every real minute only adds 0.5 minutes to the trip progress.
Track two times: trip progress and real clock. For each passing real minute, update the trip progress accordingly (0.5 or 1).
Stop when the trip progress reaches 120 minutes, then output the final real clock time (using modulo 24 hours to handle the next day).