Given an array of N non-negative integers, and a number K, we need to find two non-overlapping contiguous subarrays that have a total sum of K. Our algorithm is supposed to find the minimum total length of the two subarrays that have total sum K.

Also, after I checked the biggest test cases that we got, N doesn't go above $10^4$ and K doesn't go above $10^6$ (but specific subarrays can have a sum way larger than that)

The algorithm implementation (using C++), must have a time complexity of at most `O(logN * N^2)`.

The only idea I've had that is better than `O(n^3)` is to find all possible contiguous subarrays and their sum (`O(N^2)` using a prefix sum array), then sort them by sum (`O(logN * N^2)`), and for each subarray I do a binary search to find the subarray that has the remaining sum (which is K - (sum of first subarray)).

While this idea has better time complexity than `O(n^3)`, its space complexity is pretty bad, because I have to save three arrays of size `N(N+1)/2`, and the C++ program ends up using 1-2 GB of RAM for large N (>1000).

So my question is: Is there any way to solve the problem efficiently, without the need of the longer arrays?? Or is there any other way I can implement the idea above with C++ so that I don't use up so much memory?

Thanks