Problem · Binary Search

Minimum Time for Two Delivery Drones

Learn this problem
MediumAmazon logoAmazonFULLTIMEOA
See Amazon hiring insights

Problem statement

Amazon operates two delivery drones. Drone 1 must complete delivery1 deliveries, and Drone 2 must complete delivery2 deliveries. Each delivery occupies exactly one numbered hour.

The drones follow these charging rules while they still have deliveries remaining:

  • Drone 1 must charge during every numbered hour that is a multiple of charge1.
  • Drone 2 must charge during every numbered hour that is a multiple of charge2.
  • A drone cannot make a delivery during one of its charging hours.
  • Both drones may charge during the same hour.
  • At most one drone may make a delivery during any numbered hour.

Following the source's hour numbering, a delivery assigned to hour h finishes at elapsed time h + 1. Therefore, if the last delivery is assigned to hour h, the total required time is h + 1.

Return the minimum total time required for both drones to complete all deliveries.

Function

minimumDeliveryTime(delivery1: long, delivery2: long, charge1: long, charge2: long) → long

Examples

Example 1

delivery1 = 3delivery2 = 1charge1 = 2charge2 = 3return = 6

Drone 1 delivers during hours 1, 3, and 5, and it charges during hours 2 and 4. Drone 2 delivers during hour 2. Its next charging hour would be 3, but its delivery is already complete.

The last delivery occurs during hour 5, so it finishes at elapsed time 6.

Example 2

delivery1 = 1delivery2 = 1charge1 = 2charge2 = 2return = 4

One drone can deliver during hour 1. Both drones must charge during hour 2, so the other drone delivers during hour 3 and finishes at elapsed time 4.

Constraints

  • 1 <= delivery1, delivery2 <= 10^9
  • 2 <= charge1, charge2 <= 10^9
  • All calculations and the returned result fit in a signed 64-bit integer.

More Amazon problems

drafts saved locally
public long minimumDeliveryTime(long delivery1, long delivery2, long charge1, long charge2) {
    // Write your code here.
}
delivery13
delivery21
charge12
charge23
expected6
checking account