#include <bits/stdc++.h>
using namespace std;
// Function to find maximum product of two integers in an array
void findMaximumProduct(int arr[], int n)
{
// Find maximum and second maximum element in an array
int max1 = arr[0], max2 = INT_MIN;
for (int i = 1; i < n; i++)
{
// if current element is more than the maximum element,
// update maximum and second maximum element
if (arr[i] > max1)
{
max2 = max1;
max1 = arr[i];
}
// if current element is less than maximum but greater than second
// maximum element, update second maximum element
else if (arr[i] > max2)
{
max2 = arr[i];
}
// else ignore the element
}
// Find minimum and second minimum element in an array
int min1 = arr[0], min2 = INT_MAX;
for (int i = 1; i < n; i++)
{
// if current element is more than the minimum element,
// update minimum and second minimum element
if (arr[i] < min1)
{
min2 = min1;
min1 = arr[i];
}
// if current element is less than minimum but greater than second
// minimum element, update second minimum element
else if (arr[i] < min2)
min2 = arr[i];
// else ignore the element
}
// Maximum product is formed by maximum of
// 1. product of maximum and second maximum element or
// 2. product of minimum and second minimum element
if (max1 * max2 > min1 * min2)
printf("Pair is (%d, %d)", max1, max2);
else
printf("Pair is (%d, %d)", min1, min2);
}
// main function
int main()
{
int arr[] = { -3, 8, 10, -10, 20, 0, 25, 25,-8 };
int n = sizeof(arr) / sizeof(arr[0]);
findMaximumProduct(arr, n);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBGdW5jdGlvbiB0byBmaW5kIG1heGltdW0gcHJvZHVjdCBvZiB0d28gaW50ZWdlcnMgaW4gYW4gYXJyYXkKdm9pZCBmaW5kTWF4aW11bVByb2R1Y3QoaW50IGFycltdLCBpbnQgbikKewogICAgLy8gRmluZCBtYXhpbXVtIGFuZCBzZWNvbmQgbWF4aW11bSBlbGVtZW50IGluIGFuIGFycmF5CglpbnQgbWF4MSA9IGFyclswXSwgbWF4MiA9IElOVF9NSU47CgoJZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspCgl7CgkgICAgLy8gaWYgY3VycmVudCBlbGVtZW50IGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBlbGVtZW50LAoJICAgIC8vIHVwZGF0ZSBtYXhpbXVtIGFuZCBzZWNvbmQgbWF4aW11bSBlbGVtZW50CgkJaWYgKGFycltpXSA+IG1heDEpCgkJewoJCQltYXgyID0gbWF4MTsKCQkJbWF4MSA9IGFycltpXTsKCQl9CgoJCS8vIGlmIGN1cnJlbnQgZWxlbWVudCBpcyBsZXNzIHRoYW4gbWF4aW11bSBidXQgZ3JlYXRlciB0aGFuIHNlY29uZAoJCS8vIG1heGltdW0gZWxlbWVudCwgdXBkYXRlIHNlY29uZCBtYXhpbXVtIGVsZW1lbnQKICAgICAgICBlbHNlIGlmIChhcnJbaV0gPiBtYXgyKQoJCXsKCQkJbWF4MiA9IGFycltpXTsKCQl9CgoJCS8vIGVsc2UgaWdub3JlIHRoZSBlbGVtZW50Cgl9CgoKICAgIC8vIEZpbmQgbWluaW11bSBhbmQgc2Vjb25kIG1pbmltdW0gZWxlbWVudCBpbiBhbiBhcnJheQoJaW50IG1pbjEgPSBhcnJbMF0sIG1pbjIgPSBJTlRfTUFYOwoKCWZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKQoJewoJICAgIC8vIGlmIGN1cnJlbnQgZWxlbWVudCBpcyBtb3JlIHRoYW4gdGhlIG1pbmltdW0gZWxlbWVudCwKCSAgICAvLyB1cGRhdGUgbWluaW11bSBhbmQgc2Vjb25kIG1pbmltdW0gZWxlbWVudAogICAgICAgIGlmIChhcnJbaV0gPCBtaW4xKQoJCXsKCQkJbWluMiA9IG1pbjE7CgkJCW1pbjEgPSBhcnJbaV07CgkJfQoKCQkvLyBpZiBjdXJyZW50IGVsZW1lbnQgaXMgbGVzcyB0aGFuIG1pbmltdW0gYnV0IGdyZWF0ZXIgdGhhbiBzZWNvbmQKCQkvLyBtaW5pbXVtIGVsZW1lbnQsIHVwZGF0ZSBzZWNvbmQgbWluaW11bSBlbGVtZW50CgkJZWxzZSBpZiAoYXJyW2ldIDwgbWluMikKCQkJbWluMiA9IGFycltpXTsKCiAgICAgICAgLy8gZWxzZSBpZ25vcmUgdGhlIGVsZW1lbnQKCX0KCiAgICAvLyBNYXhpbXVtIHByb2R1Y3QgaXMgZm9ybWVkIGJ5IG1heGltdW0gb2YKICAgIC8vIDEuIHByb2R1Y3Qgb2YgbWF4aW11bSBhbmQgc2Vjb25kIG1heGltdW0gZWxlbWVudCBvcgogICAgLy8gMi4gcHJvZHVjdCBvZiBtaW5pbXVtIGFuZCBzZWNvbmQgbWluaW11bSBlbGVtZW50CglpZiAobWF4MSAqIG1heDIgPiBtaW4xICogbWluMikKCQlwcmludGYoIlBhaXIgaXMgKCVkLCAlZCkiLCBtYXgxLCBtYXgyKTsKCWVsc2UKCQlwcmludGYoIlBhaXIgaXMgKCVkLCAlZCkiLCBtaW4xLCBtaW4yKTsKfQoKLy8gbWFpbiBmdW5jdGlvbgppbnQgbWFpbigpCnsKICAgIGludCBhcnJbXSA9IHsgLTMsIDgsIDEwLCAtMTAsIDIwLCAwLCAyNSwgMjUsLTggfTsKCWludCBuID0gc2l6ZW9mKGFycikgLyBzaXplb2YoYXJyWzBdKTsKCglmaW5kTWF4aW11bVByb2R1Y3QoYXJyLCBuKTsKCglyZXR1cm4gMDsKfQo=