Build Array Where You Can Find The Maximum Exactly K Comparisons - Problem
Build Array Where You Can Find The Maximum Exactly K Comparisons

Imagine you're designing a number guessing game! You need to construct an array of n integers where each element is between 1 and m. But here's the twist: when someone searches for the maximum element using a specific algorithm, they should make exactly k comparisons.

The search algorithm works like this:
• Start with search_cost = 0
• Go through each element from left to right
• If the current element is greater than all previous elements (a new maximum), increment search_cost

Your goal: Count how many different arrays satisfy this condition. Since the answer can be huge, return it modulo 109 + 7.

Example: For array [2,3,1,3], the search_cost is 2 because:
• Position 0: 2 is new max → cost = 1
• Position 1: 3 > 2 (new max) → cost = 2
• Position 2: 1 ≤ 3 (no change)
• Position 3: 3 ≤ 3 (no change)

Input & Output

example_1.py — Python
$ Input: n = 2, m = 3, k = 1
Output: 6
💡 Note: Arrays with exactly 1 search cost: [1,1], [2,1], [2,2], [3,1], [3,2], [3,3]. Each has only the first element as a new maximum.
example_2.py — Python
$ Input: n = 5, m = 2, k = 3
Output: 0
💡 Note: Impossible to have 3 search costs with only values 1 and 2 in 5 positions. Maximum possible search cost is 2.
example_3.py — Python
$ Input: n = 9, m = 1, k = 1
Output: 1
💡 Note: Only one possible array [1,1,1,1,1,1,1,1,1] with search cost 1 (first element creates the maximum).

Constraints

  • 1 ≤ n ≤ 50
  • 1 ≤ m ≤ 100
  • 1 ≤ k ≤ n
  • Answer should be returned modulo 109 + 7

Visualization

Tap to expand
Trail Base (Array Positions)Peak 1Peak 2Below MaxPeak 3Below MaxHiker's Journey: Encounters 3 Peaks!MAXDP State: (position=4, max_height=4, peaks_seen=3)
Understanding the Visualization
1
Start Building
Begin with empty trail, need to place n sections with heights 1 to m
2
Track State
Keep track of: position in trail, highest peak so far, peaks encountered
3
Make Decisions
At each position, decide whether to place a new peak or stay below current max
4
Use Memoization
Remember results for (position, max_height, peaks_seen) to avoid recalculation
Key Takeaway
🎯 Key Insight: We only need to track the current maximum height and peak count, not the entire trail built so far. This reduces the problem complexity significantly and makes memoization effective.
Asked in
Google 42 Amazon 35 Meta 28 Microsoft 22
68.0K Views
Medium Frequency
~25 min Avg. Time
1.7K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen