import
java.util.*;
class
GFG{
static
int
[] kthsmallestelement(
int
[] a,
int
n,
int
k)
{
Arrays.sort(a);
int
ind = lowerBound(a,
0
, a.length,
0
);
if
(ind == n -
1
&& a[n -
1
] <
0
)
return
new
int
[] { Integer.MAX_VALUE,
0
};
int
left = ind -
1
, right = ind;
int
sum =
0
;
while
(k-- >
0
)
{
if
(left >=
0
&& sum + a[left] >
0
)
{
sum = sum + a[left];
left--;
}
else
if
(right < n)
{
sum = sum + a[right];
right++;
}
else
return
new
int
[] { Integer.MAX_VALUE,
0
};
}
return
new
int
[] { a[right -
1
],
1
};
}
static
int
lowerBound(
int
[] numbers,
int
start,
int
length,
int
searchnum)
{
int
answer = -
1
;
start =
0
;
int
end = length -
1
;
while
(start <= end)
{
int
middle = (start + end) /
2
;
if
(numbers[middle] == searchnum)
{
answer = middle;
end = middle -
1
;
}
else
if
(numbers[middle] > searchnum)
end = middle -
1
;
else
start = middle +
1
;
}
if
(answer == -
1
)
answer = length;
return
answer;
}
public
static
void
main(String[] args)
{
int
[] arr = { -
8
, -
5
, -
2
, -
4
, -
1
};
int
n = arr.length;
int
k =
2
;
int
[] ans = kthsmallestelement(arr, n, k);
if
(ans[
1
] ==
0
)
System.out.print(
"-1"
+
"\n"
);
else
System.out.print(ans[
0
] +
"\n"
);
}
}