> For the complete documentation index, see [llms.txt](https://jimmylin1991.gitbook.io/practice-of-algorithm-problems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jimmylin1991.gitbook.io/practice-of-algorithm-problems/array/1099.-two-sum-less-than-k.md).

# 1099. Two Sum Less Than K

Given an array `A` of integers and integer `K`, return the maximum `S` such that there exists `i < j` with `A[i] + A[j] = S` and `S < K`. If no `i, j` exist satisfying this equation, return -1.

**Example 1:**

```
Input: A = [34,23,1,24,75,33,54,8], K = 60
Output: 58
Explanation: 
We can use 34 and 24 to sum 58 which is less than 60.
```

**Example 2:**

```
Input: A = [10,20,30], K = 15
Output: -1
Explanation: 
In this case it's not possible to get a pair sum less that 15.
```

**Note:**

1. `1 <= A.length <= 100`
2. `1 <= A[i] <= 1000`
3. `1 <= K <= 2000`

```cpp
// sort + two pointers
int twoSumLessThanK(vector<int>& A, int K) { // time: O(nlogn); space: O(1)
    sort(A.begin(), A.end());
    int n = A.size(), i = 0, j = n - 1, res = -1;
    while (i < j) {
        int sum = A[i] + A[j];
        if (sum < K) {
            res = max(res, sum);
            ++i;
        } else {
            --j;
        }
    }
    return res;
}
```
