using
System;
class
GFG
{
public
class
pair
{
public
int
first, second;
public
pair(
int
first,
int
second)
{
this
.first = first;
this
.second = second;
}
}
static
pair getMaxandMinProduct(
int
[]arr,
int
n)
{
int
curMaxProduct = arr[0];
int
curMinProduct = arr[0];
int
prevMaxProduct = arr[0];
int
prevMinProduct = arr[0];
int
maxProduct = arr[0];
int
minProduct = arr[0];
for
(
int
i = 1; i < n; ++i)
{
curMaxProduct = Math.Max(prevMaxProduct * arr[i],
Math.Max(prevMinProduct * arr[i],
arr[i]));
curMaxProduct = Math.Max(curMaxProduct,
prevMaxProduct);
curMinProduct = Math.Min(prevMaxProduct * arr[i],
Math.Min(prevMinProduct * arr[i],
arr[i]));
curMinProduct = Math.Min(curMinProduct,
prevMinProduct);
maxProduct = Math.Max(maxProduct, curMaxProduct);
minProduct = Math.Min(minProduct, curMinProduct);
prevMaxProduct = curMaxProduct;
prevMinProduct = curMinProduct;
}
return
new
pair(minProduct, maxProduct);
}
public
static
void
Main(String[] args)
{
int
[]arr = {-4, -2, 3, 7, 5, 0, 1};
int
n = arr.Length;
pair product = getMaxandMinProduct(arr, n);
Console.Write(
"Minimum product is {0} and "
+
"Maximum product is {1}"
,
product.first, product.second);
}
}