import java.util.Arrays;
public class Main
{
// A function to fund a sorted subsequence of size 3
static void find4Numbers(int arr[], int n)
{
int max = n-1; //Index of maximum element from right side
int min = 0, second = -1; //Index of minimum element from left side
int i;
// Create an array that will store index of a smaller
// element on left side. If there is no smaller element
// on left side, then smaller[i] will be -1.
int[] smaller = new int[n];
int[] betweenSmallerAndCurrent = new int[n];
smaller[0] = -1; // first entry will always be -1
betweenSmallerAndCurrent[0] = -1;
for (i = 1; i < n; i++)
{
if (arr[i] <= arr[min])
{
min = i;
smaller[i] = -1;
betweenSmallerAndCurrent[i] = -1;
}
else
{
smaller[i] = min;
if (second != -1 && arr[second] < arr[i])
betweenSmallerAndCurrent[i] = second;
else
betweenSmallerAndCurrent[i] = -1;
if (second == -1 || arr[i] < arr[second])
second = i;
}
}
// Create another array that will store index of a
// greater element on right side. If there is no greater
// element on right side, then greater[i] will be -1.
int[] greater = new int[n];
greater[n-1] = -1; // last entry will always be -1
for (i = n-2; i >= 0; i--)
{
if (arr[i] >= arr[max])
{
max = i;
greater[i] = -1;
}
else
greater[i] = max;
}
// make sure they're right
System.
out.
println(Arrays.
toString(betweenSmallerAndCurrent
));
// Now find a number which has both a greater number on
// right side and smaller number on left side
for (i = 0; i < n; i++)
{
if (betweenSmallerAndCurrent[i] != -1 && smaller[betweenSmallerAndCurrent[i]] != -1 && greater[i] != -1)
{
System.
out.
printf("%d %d %d %d\n",
arr[smaller[betweenSmallerAndCurrent[i]]],
arr[betweenSmallerAndCurrent[i]],
arr[i],
arr[greater[i]]);
return;
}
}
// If we reach number, then there are no such 3 numbers
System.
out.
println("No such triplet found"); }
{
int arr[] = {12, 11, 10, 5, 6, 2, 9, 30};
int n = arr.length;
find4Numbers(arr, n);
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CgpwdWJsaWMgY2xhc3MgTWFpbgp7Ci8vIEEgZnVuY3Rpb24gdG8gZnVuZCBhIHNvcnRlZCBzdWJzZXF1ZW5jZSBvZiBzaXplIDMKc3RhdGljIHZvaWQgZmluZDROdW1iZXJzKGludCBhcnJbXSwgaW50IG4pCnsKICAgaW50IG1heCA9IG4tMTsgLy9JbmRleCBvZiBtYXhpbXVtIGVsZW1lbnQgZnJvbSByaWdodCBzaWRlCiAgIGludCBtaW4gPSAwLCBzZWNvbmQgPSAtMTsgLy9JbmRleCBvZiBtaW5pbXVtIGVsZW1lbnQgZnJvbSBsZWZ0IHNpZGUKICAgaW50IGk7CiAKICAgLy8gQ3JlYXRlIGFuIGFycmF5IHRoYXQgd2lsbCBzdG9yZSBpbmRleCBvZiBhIHNtYWxsZXIKICAgLy8gZWxlbWVudCBvbiBsZWZ0IHNpZGUuIElmIHRoZXJlIGlzIG5vIHNtYWxsZXIgZWxlbWVudAogICAvLyBvbiBsZWZ0IHNpZGUsIHRoZW4gc21hbGxlcltpXSB3aWxsIGJlIC0xLgogICBpbnRbXSBzbWFsbGVyID0gbmV3IGludFtuXTsKICAgaW50W10gYmV0d2VlblNtYWxsZXJBbmRDdXJyZW50ID0gbmV3IGludFtuXTsKICAgc21hbGxlclswXSA9IC0xOyAgLy8gZmlyc3QgZW50cnkgd2lsbCBhbHdheXMgYmUgLTEKICAgYmV0d2VlblNtYWxsZXJBbmRDdXJyZW50WzBdID0gLTE7CiAgIGZvciAoaSA9IDE7IGkgPCBuOyBpKyspCiAgIHsKICAgICAgIGlmIChhcnJbaV0gPD0gYXJyW21pbl0pCiAgICAgICB7CiAgICAgICAgICBtaW4gPSBpOwogICAgICAgICAgc21hbGxlcltpXSA9IC0xOwogICAgICAgICAgYmV0d2VlblNtYWxsZXJBbmRDdXJyZW50W2ldID0gLTE7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgICBzbWFsbGVyW2ldID0gbWluOwogICAgICAgICAgaWYgKHNlY29uZCAhPSAtMSAmJiBhcnJbc2Vjb25kXSA8IGFycltpXSkKICAgICAgICAgICAgIGJldHdlZW5TbWFsbGVyQW5kQ3VycmVudFtpXSA9IHNlY29uZDsKICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICBiZXR3ZWVuU21hbGxlckFuZEN1cnJlbnRbaV0gPSAtMTsKICAgICAgICAgIGlmIChzZWNvbmQgPT0gLTEgfHwgYXJyW2ldIDwgYXJyW3NlY29uZF0pCiAgICAgICAgICAgICBzZWNvbmQgPSBpOwogICAgICAgfQogICB9CiAKICAgLy8gQ3JlYXRlIGFub3RoZXIgYXJyYXkgdGhhdCB3aWxsIHN0b3JlIGluZGV4IG9mIGEKICAgLy8gZ3JlYXRlciBlbGVtZW50IG9uIHJpZ2h0IHNpZGUuIElmIHRoZXJlIGlzIG5vIGdyZWF0ZXIKICAgLy8gZWxlbWVudCBvbiByaWdodCBzaWRlLCB0aGVuIGdyZWF0ZXJbaV0gd2lsbCBiZSAtMS4KICAgaW50W10gZ3JlYXRlciA9IG5ldyBpbnRbbl07CiAgIGdyZWF0ZXJbbi0xXSA9IC0xOyAgLy8gbGFzdCBlbnRyeSB3aWxsIGFsd2F5cyBiZSAtMQogICBmb3IgKGkgPSBuLTI7IGkgPj0gMDsgaS0tKQogICB7CiAgICAgICBpZiAoYXJyW2ldID49IGFyclttYXhdKQogICAgICAgewogICAgICAgICAgbWF4ID0gaTsKICAgICAgICAgIGdyZWF0ZXJbaV0gPSAtMTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgICAgIGdyZWF0ZXJbaV0gPSBtYXg7CiAgIH0KCiAgIC8vIG1ha2Ugc3VyZSB0aGV5J3JlIHJpZ2h0CiAgIFN5c3RlbS5vdXQucHJpbnRsbihBcnJheXMudG9TdHJpbmcoc21hbGxlcikpOwogICBTeXN0ZW0ub3V0LnByaW50bG4oQXJyYXlzLnRvU3RyaW5nKGJldHdlZW5TbWFsbGVyQW5kQ3VycmVudCkpOwogICBTeXN0ZW0ub3V0LnByaW50bG4oQXJyYXlzLnRvU3RyaW5nKGdyZWF0ZXIpKTsKCiAgIC8vIE5vdyBmaW5kIGEgbnVtYmVyIHdoaWNoIGhhcyBib3RoIGEgZ3JlYXRlciBudW1iZXIgb24KICAgLy8gcmlnaHQgc2lkZSBhbmQgc21hbGxlciBudW1iZXIgb24gbGVmdCBzaWRlCiAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgIHsKICAgICAgIGlmIChiZXR3ZWVuU21hbGxlckFuZEN1cnJlbnRbaV0gIT0gLTEgJiYgc21hbGxlcltiZXR3ZWVuU21hbGxlckFuZEN1cnJlbnRbaV1dICE9IC0xICYmIGdyZWF0ZXJbaV0gIT0gLTEpCiAgICAgICB7CiAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJWQgJWQgJWQgJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJbc21hbGxlcltiZXR3ZWVuU21hbGxlckFuZEN1cnJlbnRbaV1dXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycltiZXR3ZWVuU21hbGxlckFuZEN1cnJlbnRbaV1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2dyZWF0ZXJbaV1dKTsKICAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgfQogCiAgIC8vIElmIHdlIHJlYWNoIG51bWJlciwgdGhlbiB0aGVyZSBhcmUgbm8gc3VjaCAzIG51bWJlcnMKICAgU3lzdGVtLm91dC5wcmludGxuKCJObyBzdWNoIHRyaXBsZXQgZm91bmQiKTsKfQogCiAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24KICAgewogICAgaW50IGFycltdID0gezEyLCAxMSwgMTAsIDUsIDYsIDIsIDksIDMwfTsKICAgIGludCBuID0gYXJyLmxlbmd0aDsKICAgIGZpbmQ0TnVtYmVycyhhcnIsIG4pOwogICB9Cn0K
[-1, -1, -1, -1, 3, -1, 5, 5]
[-1, -1, -1, -1, -1, -1, 4, 4]
[7, 7, 7, 7, 7, 7, 7, -1]
5 6 9 30