# Minimum sprinklers required to water a rectangular park

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 = 3Output:5Explanation:

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 = 3Output:8Explanation:

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:**

- 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. - If
**M**is even, then clearly**N* (M / 2)**sprinklers are required. - 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**.