Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n = int(input())
- numbers = list(map(int, input().split()))
- pref_sums = [0]
- pref_sums_indexes = {0: 0}
- interesting_left_to_right = {}
- for index, number in enumerate(numbers):
- pref_sums.append(pref_sums[-1] + number)
- if pref_sums[-1] in pref_sums_indexes:
- left_index = pref_sums_indexes[pref_sums[-1]]
- interesting_left_to_right[left_index] = index
- pref_sums_indexes[pref_sums[-1]] = index + 1
- good_amount = 0
- current_good_left = 0
- for left in range(n):
- while current_good_left < n and (current_good_left < left or current_good_left not in interesting_left_to_right):
- current_good_left += 1
- if current_good_left < n:
- good_amount += n - interesting_left_to_right[current_good_left]
- print(good_amount)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement