#include <iostream>
using namespace std;
// Function to return maximum product of a sub-array of given array
int maxProduct(int arr[], int n)
{
// to store maximum product sub-array found so far
int max_so_far = 0;
// consider all sub-arrays starting from i
for (int i = 0; i < n; i++)
{
// to store current sub-array product
int product = 1;
// consider all sub-arrays ending at j
for (int j = i; j < n; j++)
{
// product of elements so far
product *= arr[j];
// update max product if required
if (product > max_so_far)
max_so_far = product;
}
}
// return maximum product
return max_so_far;
}
// main function
int main()
{
int arr[] = { -6, 4, -5, 8, -10, 0, 8 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << "The maximum product of a sub-array is " <<
maxProduct(arr, n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi8vIEZ1bmN0aW9uIHRvIHJldHVybiBtYXhpbXVtIHByb2R1Y3Qgb2YgYSBzdWItYXJyYXkgb2YgZ2l2ZW4gYXJyYXkKaW50IG1heFByb2R1Y3QoaW50IGFycltdLCBpbnQgbikKewogICAgLy8gdG8gc3RvcmUgbWF4aW11bSBwcm9kdWN0IHN1Yi1hcnJheSBmb3VuZCBzbyBmYXIKICAgIGludCBtYXhfc29fZmFyID0gMDsKCgkvLyBjb25zaWRlciBhbGwgc3ViLWFycmF5cyBzdGFydGluZyBmcm9tIGkKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCS8vIHRvIHN0b3JlIGN1cnJlbnQgc3ViLWFycmF5IHByb2R1Y3QKCQlpbnQgcHJvZHVjdCA9IDE7CgoJCS8vIGNvbnNpZGVyIGFsbCBzdWItYXJyYXlzIGVuZGluZyBhdCBqCgkJZm9yIChpbnQgaiA9IGk7IGogPCBuOyBqKyspCgkJewoJCQkvLyBwcm9kdWN0IG9mIGVsZW1lbnRzIHNvIGZhcgoJCQlwcm9kdWN0ICo9IGFycltqXTsKCgkJCS8vIHVwZGF0ZSBtYXggcHJvZHVjdCBpZiByZXF1aXJlZAoJCQlpZiAocHJvZHVjdCA+IG1heF9zb19mYXIpCgkJCQltYXhfc29fZmFyID0gcHJvZHVjdDsKCQl9Cgl9CiAKICAgIC8vIHJldHVybiBtYXhpbXVtIHByb2R1Y3QKICAgIHJldHVybiBtYXhfc29fZmFyOwp9CiAKLy8gbWFpbiBmdW5jdGlvbgppbnQgbWFpbigpCnsKICAgIGludCBhcnJbXSA9IHsgLTYsIDQsIC01LCA4LCAtMTAsIDAsIDggfTsKICAgIGludCBuID0gc2l6ZW9mKGFycikgLyBzaXplb2YoYXJyWzBdKTsKIAogICAgY291dCA8PCAiVGhlIG1heGltdW0gcHJvZHVjdCBvZiBhIHN1Yi1hcnJheSBpcyAiIDw8IAogICAgICAgICAgICBtYXhQcm9kdWN0KGFyciwgbik7CiAKICAgIHJldHVybiAwOwp9