The Earliest and Latest Rounds Where Players Compete

There is a tournament where n players are participating. The players are standing in a single row and are numbered from 1 to n based on their initial standing position: player 1 is the first player in the row, player 2 is the second player in the row, and so on.

The tournament consists of multiple rounds, starting from round number 1. In each round, the i^th player from the front of the row competes against the i^th player from the end of the row, and the winner advances to the next round. When the number of players is odd for the current round, the player in the middle automatically advances to the next round.

After each round is over, the winners are lined back up in the row based on their original ordering assigned initially, in ascending order.

The players numbered firstPlayer and secondPlayer are the best in the tournament. They can win against any other player before they compete against each other. If any two other players compete against each other, either of them might win, and you may choose the outcome of that round.

Given the integers n, firstPlayer, and secondPlayer, return an integer array containing two values: the earliest possible round number and the latest possible round number in which these two players will compete against each other, respectively.

Example 1
Inputn = 11, firstPlayer = 2, secondPlayer = 4
Output[3,4]
By choosing outcomes, players 2 and 4 can meet as early as round 3 or as late as round 4.
Example 2
Inputn = 5, firstPlayer = 1, secondPlayer = 5
Output[1,1]
The players numbered 1 and 5 compete in the first round, and there is no way to make them compete in any other round.

Constraints

  • 2 <= n <= 28
  • 1 <= firstPlayer < secondPlayer <= n

Asked at 4 companies

</>

Your Solution

(Ctrl/Cmd + Enter)

Switching Language

Loading template...

Loading...

Sign in to save your progress

AI code evaluation

Get a correctness verdict, missed edge cases, and complexity analysis of your solution.

Sign in to evaluate