public class Main
{
public static int maxSubarrayValue(int[] mea) {
// Initialize val to a very small number
int val = -123456789;
int n = mea.length;
// Iterate over all possible subarray sizes
for (int count = 1; count <= n; count++) {
// Iterate over all possible starting indices for subarrays of the current size
for (int i = 0; i <= n - count; i++) {
// Extract the subarray
int[] subarray = new int[count];
System.arraycopy(mea, i, subarray, 0, count);
// Find the minimum value in the subarray
int minVal = findMin(subarray);
// Calculate the value for this subarray
int currentVal = count * minVal;
// Update the maximum value
val = Math.max(val, currentVal);
// Print debug information
System.out.println("Checking the min in " + java.util.Arrays.toString(subarray));
System.out.println("min is " + minVal + " actual val is " + currentVal);
}
}
// If val is still the initial very small number, return 0
if (val == -123456789) {
return 0;
}
return val;
}
private static int findMin(int[] array) {
int min = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] < min) {
min = array[i];
}
}
return min;
}
public static void main(String[] args) {
int[] mea = {10,80,30,500,70,40,20};
int result = maxSubarrayValue(mea);
System.out.println("Max value: " + result);
}
}