
									 Problem
								
								
									 Solution
								
								
									 Submissions
								
								
							Number of Taps to Water Garden
								Certification: Advanced Level
								Accuracy: 0%
								Submissions: 0
								Points: 15
							
							Write a C program to find the minimum number of taps needed to water a garden. There is a one-dimensional garden on the x-axis. The garden starts at x = 0 and ends at x = n. There are n + 1 taps located at points [0, 1, 2, ..., n] on the x-axis. Given an integer n and an integer array ranges of length n + 1 where ranges[i] (0-indexed) means the i-th tap can water the area [i - ranges[i], i + ranges[i]] if it was open. Return the minimum number of taps that should be open to water the whole garden, If the garden cannot be watered return -1.
Example 1
- Input: n = 5, ranges = [3,4,1,1,0,0]
- Output: 1
- Explanation: 
 The tap at point 0 can cover range [-3, 3].
 The tap at point 1 can cover range [-3, 5].
 Since tap at point 1 covers [0, 5] completely, only 1 tap is needed.
 Therefore, minimum taps needed = 1.
Example 2
- Input: n = 3, ranges = [0,0,0,0]
- Output: -1
- Explanation: 
 All taps have range 0, so each can only water their own point.
 Tap 0 covers [0,0], tap 1 covers [1,1], tap 2 covers [2,2], tap 3 covers [3,3].
 No tap can cover multiple points, impossible to water entire garden [0,3].
 Therefore, return -1.
Constraints
- 1 ≤ n ≤ 10^4
- ranges.length == n + 1
- 0 ≤ ranges[i] ≤ 100
- Time Complexity: O(n^2)
- Space Complexity: O(n)
Editorial
									
												
My Submissions
										All Solutions
									| Lang | Status | Date | Code | 
|---|---|---|---|
| You do not have any submissions for this problem. | |||
| User | Lang | Status | Date | Code | 
|---|---|---|---|---|
| No submissions found. | ||||
Solution Hints
- Convert the tap ranges into intervals that each tap can cover
- Use greedy approach to select minimum taps
- For each position, find the tap that extends the farthest
- Keep track of current coverage and next possible coverage
- If at any point coverage gap exists, return -1
- Count the number of taps used during the process
