#include <bits/stdc++.h> #define qio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define debug(x) cerr<<#x<<" "<<x<<endl #define ll long long #define st first #define nd second using namespace std; int n, t, ia, ib, ic, iab, iac, ibc; ll res; string s; map<pair<int, int>, int> abc, ab, ac, bc, a, b, c; int main() { qio; cin >> s; abc[{0, 0}] = 1; ab[{0, 0}] = 1; ac[{0, 0}] = 1; bc[{0, 0}] = 1; a[{0, 0}] = 1; b[{0, 0}] = 1; c[{0, 0}] = 1; for (int i = 0; i < s.size(); i++) { if (s[i] == 'a') ia++; else if (s[i] == 'b') ib++; else ic++; iab = ia - ib; ibc = ib - ic; iac = ia - ic; res += abc[{iab, ibc}]; res += ab[{iab, ic}]; res += ac[{iac, ib}]; res += bc[{ibc, ia}]; res += a[{ib, ic}]; res += b[{ia, ic}]; res += c[{ia, ib}]; abc[{iab, ibc}]++; ab[{iab, ic}]++; ac[{iac, ib}]++; bc[{ibc, ia}]++; a[{ib, ic}]++; b[{ia, ic}]++; c[{ia, ib}]++; } cout << res << endl; }
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 | #include <bits/stdc++.h> #define qio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define debug(x) cerr<<#x<<" "<<x<<endl #define ll long long #define st first #define nd second using namespace std; int n, t, ia, ib, ic, iab, iac, ibc; ll res; string s; map<pair<int, int>, int> abc, ab, ac, bc, a, b, c; int main() { qio; cin >> s; abc[{0, 0}] = 1; ab[{0, 0}] = 1; ac[{0, 0}] = 1; bc[{0, 0}] = 1; a[{0, 0}] = 1; b[{0, 0}] = 1; c[{0, 0}] = 1; for (int i = 0; i < s.size(); i++) { if (s[i] == 'a') ia++; else if (s[i] == 'b') ib++; else ic++; iab = ia - ib; ibc = ib - ic; iac = ia - ic; res += abc[{iab, ibc}]; res += ab[{iab, ic}]; res += ac[{iac, ib}]; res += bc[{ibc, ia}]; res += a[{ib, ic}]; res += b[{ia, ic}]; res += c[{ia, ib}]; abc[{iab, ibc}]++; ab[{iab, ic}]++; ac[{iac, ib}]++; bc[{ibc, ia}]++; a[{ib, ic}]++; b[{ia, ic}]++; c[{ia, ib}]++; } cout << res << endl; } |