#include <stdio.h>
#include <limits.h>
int minimum(int x, int y) {
return (x < y) ? x : y ;
}
// Find the minimum product among all combinations of triplets in the array
int minimumProductTriplet(int A[], int n)
{
// stores minimum product of a triplet
int min = INT_MAX;
for (int i = 0; i <= n - 3; i++) {
for (int j = i + 1; j <= n - 2; j++) {
for (int k = j + 1; k <= n - 1; k++) {
min = minimum(min, A[i] * A[j] * A[k]);
}
}
}
return min;
}
int main()
{
int A[] = { 4, -1, 3, 5, 9 };
int n = sizeof(A) / sizeof(A[0]);
int min = minimumProductTriplet(A, n);
if (min == INT_MAX)
printf("No triplet exists since the array has less than 3 elements"); else
printf("The minimum product is %d", min
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KCmludCBtaW5pbXVtKGludCB4LCBpbnQgeSkgewogICAgcmV0dXJuICh4IDwgeSkgPyB4IDogeSA7Cn0KCi8vIEZpbmQgdGhlIG1pbmltdW0gcHJvZHVjdCBhbW9uZyBhbGwgY29tYmluYXRpb25zIG9mIHRyaXBsZXRzIGluIHRoZSBhcnJheQppbnQgbWluaW11bVByb2R1Y3RUcmlwbGV0KGludCBBW10sIGludCBuKQp7CiAgICAvLyBzdG9yZXMgbWluaW11bSBwcm9kdWN0IG9mIGEgdHJpcGxldAogICAgaW50IG1pbiA9IElOVF9NQVg7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbiAtIDM7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSBpICsgMTsgaiA8PSBuIC0gMjsgaisrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGsgPSBqICsgMTsgayA8PSBuIC0gMTsgaysrKSB7CiAgICAgICAgICAgICAgICBtaW4gPSBtaW5pbXVtKG1pbiwgQVtpXSAqIEFbal0gKiBBW2tdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbWluOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBBW10gPSB7IDQsIC0xLCAzLCA1LCA5IH07CiAgICBpbnQgbiA9IHNpemVvZihBKSAvIHNpemVvZihBWzBdKTsKCiAgICBpbnQgbWluID0gbWluaW11bVByb2R1Y3RUcmlwbGV0KEEsIG4pOwoKICAgIGlmIChtaW4gPT0gSU5UX01BWCkKICAgICAgICBwcmludGYoIk5vIHRyaXBsZXQgZXhpc3RzIHNpbmNlIHRoZSBhcnJheSBoYXMgbGVzcyB0aGFuIDMgZWxlbWVudHMiKTsKICAgIGVsc2UKICAgICAgICBwcmludGYoIlRoZSBtaW5pbXVtIHByb2R1Y3QgaXMgJWQiLCBtaW4pOwoKICAgIHJldHVybiAwOwp9