5643. 将数组分成三个子数组的方案数
状态:未AC
代码:三指针,看的头疼
typedef long long ll;
const ll MOD = 1e9+7;
class Solution {
public:
int waysToSplit(vector<int>& nums) {
int n = nums.size();
ll res = 0;
vector<int> s(n+1);
for(int i=1; i<=n; i++) s[i] = s[i-1] + nums[i-1];
for(int i=3, x=2, y=2; i<=n; i++){
while(s[n] - s[i-1] < s[i-1] - s[x-1])
x++;
while(y+1 < i && s[i-1] - s[y] >= s[y])
y++;
if(x<=y && s[n] - s[i-1] >= s[i-1] - s[y-1] && s[i-1] - s[x-1] >= s[x-1])
res = (res + y-x+1) % MOD;
}
return res;
}
};