Given the length L and breadth B of a rectangle and the position of a hole in the rectangle as (X, Y) coordinate, the task is to find the area of largest Rectangle within the given Rectangle such that it does not contain the hole.
Note: The rectangle is placed at the origin by two of its side touching the Co-ordinate axis.
Examples:
Input: L = 8, B = 8, X = 0, Y = 0
Output: 56
Explanation:
Since the hole is at origin, i.e. (0, 0), the maximum area rectangle can be cut from either (0, 1) or (1, 0) by reducing the length or breadth of the rectangle by one.
Hence, the maximum area rectangle that can be formed is = 7 * 8 = 56

Input: L = 1, B = 10, X = 0, Y = 3
Output: 6
Explanation:
Since the hole is at (0, 3), the maximum area rectangle can be cutted from the point (0, 4) by reducing the breadth to 6 and keeping the length as 1.
Hence, the maximum area rectangle that can be formed is = 6 * 1 = 6
Approach: In order to avoid the hole, the rectangle can be cut from either above, below, left or right of the hole, as:
Position - Maximum area of rectangle
------------------------------------
Left - X * B
Right - (L - X - 1) * B
Above - L * Y
Below - (B - Y - 1) * L
Therefore, the required area of the largest rectangle can be computed by comparing the area calculated by using the above positions. The position with the largest area will yield the result.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void maximumArea( int l, int b,
int x, int y)
{
int left, right, above, below;
left = x * b;
right = (l - x - 1) * b;
above = l * y;
below = (b - y - 1) * l;
cout << max(max(left, right),
max(above, below));
}
int main()
{
int L = 8, B = 8;
int X = 0, Y = 0;
maximumArea(l, b, x, y);
return 0;
}
|
Java
import java.util.*;
class GFG{
static void maximumArea( int l, int b,
int x, int y)
{
int left, right, above, below;
left = x * b;
right = (l - x - 1 ) * b;
above = l * y;
below = (b - y - 1 ) * l;
System.out.print(Math.max(Math.max(left, right),
Math.max(above, below)));
}
public static void main(String[] args)
{
int L = 8 , B = 8 ;
int X = 0 , Y = 0 ;
maximumArea(L, B, X, Y);
}
}
|
Python3
def maximumArea(l, b,x, y):
left, right, above, below = 0 , 0 , 0 , 0
left = x * b
right = (l - x - 1 ) * b
above = l * y
below = (b - y - 1 ) * l
print ( max ( max (left, right), max (above, below)))
l = 8
b = 8
x = 0
y = 0
maximumArea(l, b, x, y)
|
C#
using System;
class GFG{
static void maximumArea( int l, int b,
int x, int y)
{
int left, right, above, below;
left = x * b;
right = (l - x - 1) * b;
above = l * y;
below = (b - y - 1) * l;
Console.Write(Math.Max(Math.Max(left, right),
Math.Max(above, below)));
}
public static void Main(String[] args)
{
int L = 8, B = 8;
int X = 0, Y = 0;
maximumArea(L, B, X, Y);
}
}
|
Javascript
<script>
function maximumArea(l, b, x, y) {
var left = x * b;
var right = (l - x - 1) * b;
var above = l * y;
var below = (b - y - 1) * l;
document.write(Math.max(Math.max(left, right), Math.max(above, below)));
}
var L = 8,
B = 8;
var X = 0,
Y = 0;
maximumArea(L, B, X, Y);
</script>
|
Performance Analysis:
- Time Complexity: There is a simple computation that does not involve any iterations or recursions. Hence, the Time Complexity will be O(1).
- Auxiliary Space Complexity: There is no extra space used. Hence, the auxiliary space complexity will be O(1).
Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!
Last Updated :
05 May, 2021
Like Article
Save Article