def oblicz_sumy_podciagow(a, n): sumy = [] for i in range(n): suma = 0 for j in range(i, n): suma += a[j] sumy.append(suma) return sorted(sumy) def znajdz_trojki_sumujace_do_zera(sumy): licznik = 0 n = len(sumy) for i in range(n): j, k = i + 1, n - 1 while j < k: suma = sumy[i] + sumy[j] + sumy[k] if suma == 0: licznik += 1 j += 1 k -= 1 elif suma < 0: j += 1 else: k -= 1 return licznik n = int(input()) a = list(map(int, input().split())) sumy = oblicz_sumy_podciagow(a, n) wynik = znajdz_trojki_sumujace_do_zera(sumy) print(wynik)
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 29 30 31 32 | def oblicz_sumy_podciagow(a, n): sumy = [] for i in range(n): suma = 0 for j in range(i, n): suma += a[j] sumy.append(suma) return sorted(sumy) def znajdz_trojki_sumujace_do_zera(sumy): licznik = 0 n = len(sumy) for i in range(n): j, k = i + 1, n - 1 while j < k: suma = sumy[i] + sumy[j] + sumy[k] if suma == 0: licznik += 1 j += 1 k -= 1 elif suma < 0: j += 1 else: k -= 1 return licznik n = int(input()) a = list(map(int, input().split())) sumy = oblicz_sumy_podciagow(a, n) wynik = znajdz_trojki_sumujace_do_zera(sumy) print(wynik) |