Skip to content
Related Articles

Related Articles

Improve Article

Minimum sprinklers required to water a rectangular park

  • Difficulty Level : Expert
  • Last Updated : 06 Jul, 2021

Given N * M rectangular park having N rows and M columns, each cell of the park is a square of unit area and boundaries between the cells is called hex and a sprinkler can be placed in the middle of the hex. The task is to find the minimum number of sprinklers required to water the entire park.

Examples: 

Input: N = 3 M = 3 
Output:
Explanation: 
For the first two columns 3 sprinklers are required and for last column we are bound to use 2 sprinklers to water the last column.

Input: N = 5 M = 3 
Output:
Explanation: 
For the first two columns 5 sprinklers are required and for last column we are bound to use 3 sprinklers to water the last column. 

Approach: 



  1. After making some observation one thing can be point out i.e for every two column, N sprinkler are required because we can placed them in between of two columns.
  2. If M is even, then clearly N* (M / 2) sprinklers are required.
  3. But if M is odd then solution for M – 1 column can be computed using even column formula, and for last column add ( N + 1) / 2 sprinkler to water the last column irrespective of N is odd or even.

C++




// C++ program to find the
// minimum number sprinklers
// required to water the park.
 
#include <iostream>
using namespace std;
typedef long long int ll;
 
// Function to find the
// minimum number sprinklers
// required to water the park.
void solve(int N, int M)
{
 
    // General requirements of
    // sprinklers
    ll ans = (N) * (M / 2);
 
    // if M is odd then add
    // one additional sprinklers
    if (M % 2 == 1) {
        ans += (N + 1) / 2;
    }
 
    cout << ans << endl;
}
 
// Driver code
int main()
{
    int N, M;
    N = 5;
    M = 3;
    solve(N, M);
}

Java




// Java program to find minimum
// number sprinklers required
// to cover the park
class GFG{
     
// Function to find the minimum
// number sprinklers required
// to water the park.
public static int solve(int n, int m)
{
     
    // General requirements of sprinklers
    int ans = n * (m / 2);
         
    // If M is odd then add one
    // additional sprinklers
    if (m % 2 == 1)
    {
        ans += (n + 1) / 2;
    }
    return ans;
}
 
// Driver code
public static void main(String args[])
{
    int N = 5;
    int M = 3;
     
    System.out.println(solve(N, M));
}
}
 
// This code is contributed by grand_master

Python3




# Python3 program to find the
# minimum number sprinklers
# required to water the park.
 
# Function to find the
# minimum number sprinklers
# required to water the park.
def solve(N, M) :
     
    # General requirements of
    # sprinklers
    ans = int((N) * int(M / 2))
 
    # if M is odd then add
    # one additional sprinklers
    if (M % 2 == 1):
        ans += int((N + 1) / 2)
 
    print(ans)
 
# Driver code
N = 5
M = 3
solve(N, M)
 
# This code is contributed by yatinagg

C#




// C# program to find minimum
// number sprinklers required
// to cover the park
using System;
 
class GFG{
     
// Function to find the minimum
// number sprinklers required
// to water the park.
public static int solve(int n, int m)
{
     
    // General requirements of sprinklers
    int ans = n * (m / 2);
         
    // If M is odd then add one
    // additional sprinklers
    if (m % 2 == 1)
    {
        ans += (n + 1) / 2;
    }
    return ans;
}
 
// Driver code
public static void Main(String []args)
{
    int N = 5;
    int M = 3;
     
    Console.WriteLine(solve(N, M));
}
}
 
// This code is contributed by 29AjayKumar

Javascript




<script>
 
// javascript program to find the
// minimum number sprinklers
// required to water the park.
 
// Function to find the
// minimum number sprinklers
// required to water the park.
function solve(N, M)
{
 
    // General requirements of
    // sprinklers
    var ans = (N) * parseInt((M / 2));
 
    // if M is odd then add
    // one additional sprinklers
    if (M % 2 == 1) {
        ans += parseInt((N + 1) / 2);
    }
 
    document.write(ans);
}
 
// Driver code
    var N, M;
    N = 5;
    M = 3;
    solve(N, M);
 
// This code is contributed by SURENDRA_GANGWAR.
</script>

Output:

8

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :