#include<bits/stdc++.h> #define st 10000000 using namespace std; constexpr int MAXC = 2e7+4; constexpr int MAXN = 5e2+3; int ile[MAXC], a[MAXN]; int main() { int odp = 0; int n; cin >> n; for(int i = 1; i <= n; ++i) { cin >> a[i]; } vector<int> c; for(int i = 1; i <= n; ++i) { int suma = a[i]; if(!ile[suma+st]) { c.push_back(suma); } ile[suma+st]++; for(int j = i+1; j <= n; ++j) { suma += a[j]; if(!ile[suma+st]) c.push_back(suma); ile[suma+st]++; } } for(int i = 0; i < (int)c.size(); ++i) { for(int j = i + 1; j < (int)c.size(); ++j) { int suma = c[i] + c[j]; int szukana = -suma; //cerr << c[i] << ' ' << c[j] << ' ' << suma << ' ' << szukana << '\n'; //cerr << (ile[szukana+st]*(ile[c[i]+st]-(c[i]==szukana))*(ile[c[j]+st]-(c[i]==c[j])-(c[j]==szukana))) << '\n'; odp += (ile[szukana+st]*(ile[c[i]+st]-(c[i]==szukana))*(ile[c[j]+st]-(c[i]==c[j])-(c[j]==szukana))); } } odp /= 3; odp += ile[st]*(ile[st]-1)*(ile[st]-2)/6; //cout << ile[st] << '\n'; cout << odp; }
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 | #include<bits/stdc++.h> #define st 10000000 using namespace std; constexpr int MAXC = 2e7+4; constexpr int MAXN = 5e2+3; int ile[MAXC], a[MAXN]; int main() { int odp = 0; int n; cin >> n; for(int i = 1; i <= n; ++i) { cin >> a[i]; } vector<int> c; for(int i = 1; i <= n; ++i) { int suma = a[i]; if(!ile[suma+st]) { c.push_back(suma); } ile[suma+st]++; for(int j = i+1; j <= n; ++j) { suma += a[j]; if(!ile[suma+st]) c.push_back(suma); ile[suma+st]++; } } for(int i = 0; i < (int)c.size(); ++i) { for(int j = i + 1; j < (int)c.size(); ++j) { int suma = c[i] + c[j]; int szukana = -suma; //cerr << c[i] << ' ' << c[j] << ' ' << suma << ' ' << szukana << '\n'; //cerr << (ile[szukana+st]*(ile[c[i]+st]-(c[i]==szukana))*(ile[c[j]+st]-(c[i]==c[j])-(c[j]==szukana))) << '\n'; odp += (ile[szukana+st]*(ile[c[i]+st]-(c[i]==szukana))*(ile[c[j]+st]-(c[i]==c[j])-(c[j]==szukana))); } } odp /= 3; odp += ile[st]*(ile[st]-1)*(ile[st]-2)/6; //cout << ile[st] << '\n'; cout << odp; } |