Related Articles

# 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 ``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

 ``

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