# Container with Most Water

Given n non-negative integers where each represents a point at coordinate . ‘ n ‘ vertical lines are drawn such that the two endpoints of line i is at and .
Find two lines, which together with x-axis forms a container, such that the container contains the most water.

The program should return an integer which corresponds to the maximum area of water that can be contained ( maximum area instead of maximum volume sounds weird but this is 2D plane we are working with for simplicity ).

Note : You may not slant the container.

Examples :

```Input : [1, 5, 4, 3]
Output : 6
Explanation :
5 and 3 are distance 2 apart.
So the size of the base = 2.
Height of container = min(5, 3) = 3.
So total area = 3 * 2 = 6

Input : [3, 1, 2, 4, 5]
Output : 12
Explanation :
5 and 3 are distance 4 apart.
So the size of the base = 4.
Height of container = min(5, 3) = 3.
So total area = 4 * 3 = 12
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach :

```Note 1 : When you consider a1 and aN, then the area is (N-1) * min(a1, aN).
Note 2 : The base (N-1) is the maximum possible.```
• This implies that if there was a better solution possible, it will definitely have the Height greater than min(a1, aN). • We know that, Base min(a1, aN)
This means that we can discard min(a1, aN) from our set and look to solve this problem again from the start.
• If a1 < aN, then the problem reduces to solving the same thing for a2, aN.
• Else, it reduces to solving the same thing for a1, aN-1

## C++

 `// C++ code for Max  ` `// Water Container ` `#include ` `using` `namespace` `std; ` ` `  `int` `maxArea(``int` `A[], ``int` `len) ` `{ ` `    ``int` `l = 0; ` `    ``int` `r = len -1; ` `    ``int` `area = 0; ` `     `  `    ``while` `(l < r) ` `    ``{ ` `        ``// Calculating the max area ` `        ``area = max(area, min(A[l], ` `                        ``A[r]) * (r - l)); ` `                         `  `            ``if` `(A[l] < A[r]) ` `                ``l += 1; ` `                 `  `            ``else` `                ``r -= 1; ` `    ``} ` `    ``return` `area; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `a[] = {1, 5, 4, 3}; ` `    ``int` `b[] = {3, 1, 2, 4, 5}; ` `     `  `    ``int` `len1 = ``sizeof``(a) / ``sizeof``(a); ` `    ``cout << maxArea(a, len1); ` `     `  `    ``int` `len2 = ``sizeof``(b) / ``sizeof``(b); ` `    ``cout << endl << maxArea(b, len2); ` `} ` ` `  `// This code is contributed by Smitha Dinesh Semwal `

## Java

 `// Java code for Max  ` `// Water Container ` `import` `java.util.*; ` ` `  `class` `Area{ ` ` `  `    ``public` `static` `int` `maxArea(``int` `A[], ``int` `len) ` `    ``{ ` `        ``int` `l = ``0``; ` `        ``int` `r = len -``1``; ` `        ``int` `area = ``0``; ` `     `  `        ``while` `(l < r) ` `        ``{ ` `            ``// Calculating the max area ` `            ``area = Math.max(area,  ` `                        ``Math.min(A[l], A[r]) * (r - l)); ` `                         `  `            ``if` `(A[l] < A[r]) ` `                ``l += ``1``; ` `                 `  `            ``else` `                ``r -= ``1``; ` `        ``} ` `        ``return` `area; ` `    ``} ` `     `  `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `a[] = {``1``, ``5``, ``4``, ``3``}; ` `        ``int` `b[] = {``3``, ``1``, ``2``, ``4``, ``5``}; ` `     `  `        ``int` `len1 = ``4``; ` `        ``System.out.print( maxArea(a, len1)+``"\n"` `); ` `     `  `        ``int` `len2 = ``5``; ` `        ``System.out.print( maxArea(b, len2) ); ` `    ``} ` `} ` ` `  `// This code is contributed by rishabh_jain `

## Python

 `# Python code for Max  ` `# Water Container ` `def` `maxArea( A): ` `    ``l ``=` `0` `    ``r ``=` `len``(A) ``-``1` `    ``area ``=` `0` `     `  `    ``while` `l < r: ` `        ``# Calculating the max area ` `        ``area ``=` `max``(area, ``min``(A[l],  ` `                        ``A[r]) ``*` `(r ``-` `l)) ` `     `  `        ``if` `A[l] < A[r]: ` `            ``l ``+``=` `1` `        ``else``: ` `            ``r ``-``=` `1` `    ``return` `area ` ` `  `# Driver code ` `a ``=` `[``1``, ``5``, ``4``, ``3``] ` `b ``=` `[``3``, ``1``, ``2``, ``4``, ``5``] ` ` `  `print``(maxArea(a)) ` `print``(maxArea(b)) `

## C#

 `// C# code for Max  ` `// Water Container ` `using` `System; ` ` `  `class` `Area{ ` ` `  `    ``public` `static` `int` `maxArea(``int` `[]A, ``int` `len) ` `    ``{ ` `        ``int` `l = 0; ` `        ``int` `r = len -1; ` `        ``int` `area = 0; ` `     `  `        ``while` `(l < r) ` `        ``{ ` `            ``// Calculating the max area ` `            ``area = Math.Max(area,  ` `                        ``Math.Min(A[l], A[r]) * (r - l)); ` `                         `  `            ``if` `(A[l] < A[r]) ` `                ``l += 1; ` `                 `  `            ``else` `                ``r -= 1; ` `        ``} ` `        ``return` `area; ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `[]a = {1, 5, 4, 3}; ` `        ``int` `[]b = {3, 1, 2, 4, 5}; ` `     `  `        ``int` `len1 = 4; ` `        ``Console.WriteLine( maxArea(a, len1)); ` `     `  `        ``int` `len2 = 5; ` `        ``Console.WriteLine( maxArea(b, len2) ); ` `    ``} ` `} ` ` `  `// This code is contributed by Vt_M `

## PHP

 ` `

Output :

```6
12
```

My Personal Notes arrow_drop_up If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : Mithun Kumar