-
-
Notifications
You must be signed in to change notification settings - Fork 9k
/
Copy pathSolution.py
28 lines (28 loc) · 949 Bytes
/
Solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution:
def waysToSplit(self, nums: List[int]) -> int:
mod = 1e9 + 7
n = len(nums)
pre = [0] * (n + 1)
for i in range(1, n + 1):
pre[i] = pre[i - 1] + nums[i - 1]
ans = 0
for i in range(1, n - 1):
if pre[i] * 3 > pre[n]:
break
left, right = i + 1, n - 1
while left < right:
mid = (left + right + 1) >> 1
if pre[mid] - pre[i] <= pre[n] - pre[mid]:
left = mid
else:
right = mid - 1
mid_right = left
left, right = i + 1, n - 1
while left < right:
mid = (left + right) >> 1
if pre[mid] - pre[i] >= pre[i]:
right = mid
else:
left = mid + 1
ans += (mid_right - left + 1) % mod
return int(ans % mod)