import java.io.Console;
import java.util.ArrayList;

public class MaxProduct {
    public static void main(String[] args) {
        ArrayList<Integer> entered = new ArrayList<Integer>();
        Console user = System.console();
        while(true) {
            user.printf("Number %d [enter empty line at end]: ",
                entered.size() + 1);
            String line = user.readLine();
            if(line.equals("")) {
                if(entered.size() == 0) {
                    user.printf("Cannot compute for empty array.\n");
                } else {
                    int[] data = new int[entered.size()];
                    user.printf("Array:");
                    for(int i = 0; i < data.length; i++) {
                        data[i] = entered.get(i).intValue();
                        user.printf(" %d", data[i]);
                        if(i < data.length - 1) user.printf(",");
                    }
                    user.printf("\n");
                    user.printf("Slow: %d\n", slowMaxProduct(data));
                    user.printf("Fast: %d\n", fastMaxProduct(data));
                }
                entered = new ArrayList<Integer>();
            } else {
                try {
                    entered.add(Integer.decode(line));
                } catch(NumberFormatException e) {
                    user.printf("Not a valid integer.\n");
                }
            }
        }
    }

    private static int slowMaxProduct(int[] nums) {
        int n = nums.length;
        int max = nums[0];
        for(int i = 1; i != n; i++) {
            int p = nums[i];
            int sub = p;
            for(int j = i - 1; j != -1; j--) {
                p *= nums[j];
                if(p > sub) sub = p;
            }
            if(sub > max) max = sub;
        }
        return max;
    }

    private static int fastMaxProduct(int[] nums) {
        return 0;
    }
}
