3
int minTaps(int n, vector<int> &ranges) {4
vector<pair<int, int>> v;5
for (int i = 0; i < ranges.size(); i++) {7
v.push_back({i - ranges[i], i + ranges[i]});9
// sorting the intervals10
sort(v.begin(), v.end());12
// to keep track from where we need to cover15
// number of ranges used18
// to check if its possible21
// as long as we have not covered the garden22
while (uncovered < n) {23
// we will try to cover the uncovered such that new uncovered is maximum25
int new_uncovered = uncovered;26
while (idx < n + 1 && v[idx].first <= uncovered) {27
new_uncovered = max(new_uncovered, v[idx].second);30
// we have used one range33
// it means we were not able to cover with ranges so not possible34
if (new_uncovered == uncovered) {38
// updating uncovered for next iteration39
uncovered = new_uncovered;