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

My Personal Notes arrow_drop_up