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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>

using namespace std;

int find3Numbers(vector<int>& bardzoUlubionyCiag) {
    int count = 0;
    int n = bardzoUlubionyCiag.size();
    sort(bardzoUlubionyCiag.begin(), bardzoUlubionyCiag.end());

    unordered_map<int, int> numCount;

    for (int i = 0; i < n; i++) {
        numCount[bardzoUlubionyCiag[i]]++;
    }

    if (numCount[0] >= 3) {
        count += (numCount[0] * (numCount[0] - 1) * (numCount[0] - 2)) / 6;
    }

    for (int i = 0; i < n - 2; i++) {
        if (bardzoUlubionyCiag[i] == 0) continue;

        int left = i + 1;
        int right = n - 1;
        int target = -bardzoUlubionyCiag[i];

        while (left < right) {
            int sum = bardzoUlubionyCiag[left] + bardzoUlubionyCiag[right];

            if (sum == target) {
                count++;
                left++;
                right--;
            } else if (sum < target) {
                left++;
            } else {
                right--;
            }
        }
    }

    return count;
}



int main() {
    int n;
  //  cout << "Podaj liczbę elementów Ulubionego Ciągu Bajtka: ";
    cin >> n;

    vector<int> ulubionyCiag(n);
   // cout << "Podaj elementy Ulubionego Ciągu Bajtka: ";
    for (int i = 0; i < n; i++) {
        cin >> ulubionyCiag[i];
    }

    vector<int> bardzoUlubionyCiag;
    for (int i = 0; i < n; i++) {
        int sum = 0;
        for (int j = i; j < n; j++) {
            sum += ulubionyCiag[j];
            bardzoUlubionyCiag.push_back(sum);
        }
    }

    sort(bardzoUlubionyCiag.begin(), bardzoUlubionyCiag.end());


    // int a = 0, b = 1 , c = bardzoUlubionyCiag.size()-1;


    int count = find3Numbers(bardzoUlubionyCiag);
    cout << count << endl;



   // cout << "Bardzo Ulubiony Ciąg Bajtka: ";
 //  for (int i = 0; i < bardzoUlubionyCiag.size(); i++) {
  //      cout << bardzoUlubionyCiag[i] << " ";
   // }

    // cout<<endl<<a<<" "<<b<<" "<<c;

    return 0;
}