1class Solution {2public:3int waysToSplit(vector<int> &nums) {4int n = nums.size(), mod = 1e9 + 7;5long long ans = 0;6vector<int> prefix(n);7partial_sum(nums.begin(), nums.end(), prefix.begin());8for (int i = 0; i < n - 2; i++) {9int left = prefix[i], remain = (prefix[n - 1] - prefix[i]);10if (remain < left * 2) break;11int leftPtr =12lower_bound(prefix.begin() + i + 1, prefix.end() - 1, left * 2) - prefix.begin();13int rightPtr = upper_bound(prefix.begin() + i + 1, prefix.end() - 1, left + remain / 2) -14prefix.begin() - 1;1516if (rightPtr - leftPtr + 1 > 0) ans += rightPtr - leftPtr + 1;17}1819return ans % mod;20}21};