#include <iostream> #include <string> #include <vector> using namespace std; int main() { string s; cin >> s; int n = s.size(); vector<int> as(n+1, 0), bs(n+1, 0), cs(n+1, 0); for (int i = 1; i <= n; ++i) { as[i] = as[i - 1]; bs[i] = bs[i - 1]; cs[i] = cs[i - 1]; switch (s[i-1]) { case 'a': as[i] += 1; break; case 'b': bs[i] += 1; break; case 'c': cs[i] += 1; } } int balanced = 0; for (int i = 0; i < n; ++i) { for (int j = i + 1; j <= n; ++j) { int a_diff = as[j] - as[i]; int b_diff = bs[j] - bs[i]; int c_diff = cs[j] - cs[i]; if (a_diff == b_diff && b_diff == c_diff || a_diff == b_diff && c_diff == 0 || a_diff == c_diff && b_diff == 0 || b_diff == c_diff && a_diff == 0 || a_diff == 0 && b_diff == 0 || b_diff == 0 && c_diff == 0 || a_diff == 0 && c_diff == 0) { balanced++; } } } cout << balanced << '\n'; return 0; }
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 | #include <iostream> #include <string> #include <vector> using namespace std; int main() { string s; cin >> s; int n = s.size(); vector<int> as(n+1, 0), bs(n+1, 0), cs(n+1, 0); for (int i = 1; i <= n; ++i) { as[i] = as[i - 1]; bs[i] = bs[i - 1]; cs[i] = cs[i - 1]; switch (s[i-1]) { case 'a': as[i] += 1; break; case 'b': bs[i] += 1; break; case 'c': cs[i] += 1; } } int balanced = 0; for (int i = 0; i < n; ++i) { for (int j = i + 1; j <= n; ++j) { int a_diff = as[j] - as[i]; int b_diff = bs[j] - bs[i]; int c_diff = cs[j] - cs[i]; if (a_diff == b_diff && b_diff == c_diff || a_diff == b_diff && c_diff == 0 || a_diff == c_diff && b_diff == 0 || b_diff == c_diff && a_diff == 0 || a_diff == 0 && b_diff == 0 || b_diff == 0 && c_diff == 0 || a_diff == 0 && c_diff == 0) { balanced++; } } } cout << balanced << '\n'; return 0; } |