#include <bits/stdc++.h> using namespace std; map<pair<int, int>, int> dp; int main() { ios_base::sync_with_stdio(0); string s; cin >> s; pair<int, int> rr; dp[{0, 0}] = 1; long long w = 0; for (auto i : s) { if (i == 'a') { rr.first--; rr.second--; } else if (i == 'b') { rr.first++; } else { rr.second++; } w += dp[rr]; dp[rr]++; } for (int f = 'a'; f <= 'c'; f++) { long long zz = 0; for (auto i : s) { if (i == f) { zz++; } else { w += (zz) * (zz + 1) / 2; zz = 0; } } w += (zz) * (zz + 1) / 2; for (int u = f + 1; u <= 'c'; u++) { map<int, int> fm; fm[0] = 1; int prz = 0; for (auto i : s) { if(i==f){ prz++; w+=fm[prz]; fm[prz]++; }else if(i==u){ prz--; w+=fm[prz]; fm[prz]++; }else{ prz=0; fm.clear(); fm[0]=1; } } } } cout << w << '\n'; }
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 | #include <bits/stdc++.h> using namespace std; map<pair<int, int>, int> dp; int main() { ios_base::sync_with_stdio(0); string s; cin >> s; pair<int, int> rr; dp[{0, 0}] = 1; long long w = 0; for (auto i : s) { if (i == 'a') { rr.first--; rr.second--; } else if (i == 'b') { rr.first++; } else { rr.second++; } w += dp[rr]; dp[rr]++; } for (int f = 'a'; f <= 'c'; f++) { long long zz = 0; for (auto i : s) { if (i == f) { zz++; } else { w += (zz) * (zz + 1) / 2; zz = 0; } } w += (zz) * (zz + 1) / 2; for (int u = f + 1; u <= 'c'; u++) { map<int, int> fm; fm[0] = 1; int prz = 0; for (auto i : s) { if(i==f){ prz++; w+=fm[prz]; fm[prz]++; }else if(i==u){ prz--; w+=fm[prz]; fm[prz]++; }else{ prz=0; fm.clear(); fm[0]=1; } } } } cout << w << '\n'; } |