import java.util.Scanner;
public class OverlappingRectangles {
int OverlappingRectangles(String[] strArr) {
String[] coordinates = strArr[0].split("[)],[(]");
coordinates[0] = coordinates[0].substring(1);
coordinates[7] = coordinates[7].substring(0, coordinates[7].length() - 1);
String[] rect1Coords = new String[] {coordinates[0], coordinates[1],
coordinates[2], coordinates[3]};
String[] rect2Coords = new String[] {coordinates[4], coordinates[5],
coordinates[6], coordinates[7]};
int rect1MinX = getPoint(rect1Coords, true, true);
int rect1MaxX = getPoint(rect1Coords, false, true);
int rect1MinY = getPoint(rect1Coords, true, false);
int rect1MaxY = getPoint(rect1Coords, false, false);
int rect2MinX = getPoint(rect2Coords, true, true);
int rect2MaxX = getPoint(rect2Coords, false, true);
int rect2MinY = getPoint(rect2Coords, true, false);
int rect2MaxY = getPoint(rect2Coords, false, false);
int[] rect1 = new int[] {rect1MinX, rect1MaxX, rect1MinY, rect1MaxY};
int[] rect2 = new int[] {rect2MinX, rect2MaxX, rect2MinY, rect2MaxY};
int[] overlapRect = getOverlappingRectangle(rect1, rect2);
if (overlapRect == null) {
return 0;
}
int rect1Size = (rect1MaxX - rect1MinX) * (rect1MaxY - rect1MinY);
int overlapRectSize = (overlapRect[1] - overlapRect[0])
* (overlapRect[3] - overlapRect[2]);
return overlapRectSize > 0 ? rect1Size / overlapRectSize : 0;
}
int getPoint(String[] rect, boolean min, boolean x) {
int point = min ? Integer.MAX_VALUE : Integer.MIN_VALUE;
for (String coord : rect) {
int coordPoint;
if (x) {
coordPoint = Integer.parseInt(coord.split(",")[0]);
} else {
coordPoint = Integer.parseInt(coord.split(",")[1]);
}
if (min && coordPoint < point) {
point = coordPoint;
} else if (!min && coordPoint > point) {
point = coordPoint;
}
}
return point;
}
int[] getOverlappingRectangle(int[] rect1, int[] rect2) {
int minX, maxX, minY, maxY;
if (rect1[0] >= rect2[0] && rect1[0] <= rect2[1]) {
minX = rect1[0];
} else if (rect2[0] >= rect1[0] && rect2[0] <= rect1[1]) {
minX = rect2[0];
} else {
return null;
}
if (rect1[1] >= rect2[0] && rect1[1] <= rect2[1]) {
maxX = rect1[1];
} else if (rect2[1] >= rect1[0] && rect2[1] <= rect1[1]) {
maxX = rect2[1];
} else {
return null;
}
if (rect1[2] >= rect2[2] && rect1[2] <= rect2[3]) {
minY = rect1[2];
} else if (rect2[2] >= rect1[2] && rect2[2] <= rect1[3]) {
minY = rect2[2];
} else {
return null;
}
if (rect1[3] >= rect2[2] && rect1[3] <= rect2[3]) {
maxY = rect1[3];
} else if (rect2[3] >= rect1[2] && rect2[3] <= rect1[3]) {
maxY = rect2[3];
} else {
return null;
}
return new int[] {minX, maxX, minY, maxY};
}
public static void main (String[] args) {
// keep this function call here
Scanner s = new Scanner(System.in);
OverlappingRectangles c = new OverlappingRectangles();
System.out.print(c.OverlappingRectangles(new String[] {"(0,0),(5,0),
(0,2),(5,2),(2,1),(5,1),(2,-1),(5,-1)"}));
}
}