#include <bits/stdc++.h> using namespace std; #define st first #define nd second #define iamspeed ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0) long long aa, bb, cc, amb, bmc, cma, res; string s; map<pair<int, int>, long long> a, b, c, ab, bc, ca, abc; int main() { iamspeed; cin >> s; for(int i = 0 ; i < s.size() ; i++) { if(s[i] == 'a') aa++; else if(s[i] == 'b') bb++; else cc++; if((aa && !bb && !cc) || (!aa && bb && !cc) || (!aa && !bb && cc) || (aa == bb && !cc) || (bb == cc && !aa) || (cc == aa && !bb) || (aa == bb && bb == cc)) res++; amb = aa - bb; bmc = bb - cc; cma = cc - aa; if(aa != 0) res += a[make_pair(bb, cc)]; if(bb != 0) res += b[make_pair(cc, aa)]; if(cc != 0) res += c[make_pair(aa, bb)]; if(aa != 0 && bb != 0) res += ab[make_pair(cc, amb)]; if(bb != 0 && cc != 0) res += bc[make_pair(aa, bmc)]; if(cc != 0 && aa != 0) res += ca[make_pair(bb, cma)]; if(aa != 0 && bb != 0 && cc != 0) res += abc[make_pair(amb, bmc)]; a[make_pair(bb, cc)]++; b[make_pair(cc, aa)]++; c[make_pair(aa, bb)]++; ab[make_pair(cc, amb)]++; bc[make_pair(aa, bmc)]++; ca[make_pair(bb, cma)]++; abc[make_pair(amb, bmc)]++; } 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 | #include <bits/stdc++.h> using namespace std; #define st first #define nd second #define iamspeed ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0) long long aa, bb, cc, amb, bmc, cma, res; string s; map<pair<int, int>, long long> a, b, c, ab, bc, ca, abc; int main() { iamspeed; cin >> s; for(int i = 0 ; i < s.size() ; i++) { if(s[i] == 'a') aa++; else if(s[i] == 'b') bb++; else cc++; if((aa && !bb && !cc) || (!aa && bb && !cc) || (!aa && !bb && cc) || (aa == bb && !cc) || (bb == cc && !aa) || (cc == aa && !bb) || (aa == bb && bb == cc)) res++; amb = aa - bb; bmc = bb - cc; cma = cc - aa; if(aa != 0) res += a[make_pair(bb, cc)]; if(bb != 0) res += b[make_pair(cc, aa)]; if(cc != 0) res += c[make_pair(aa, bb)]; if(aa != 0 && bb != 0) res += ab[make_pair(cc, amb)]; if(bb != 0 && cc != 0) res += bc[make_pair(aa, bmc)]; if(cc != 0 && aa != 0) res += ca[make_pair(bb, cma)]; if(aa != 0 && bb != 0 && cc != 0) res += abc[make_pair(amb, bmc)]; a[make_pair(bb, cc)]++; b[make_pair(cc, aa)]++; c[make_pair(aa, bb)]++; ab[make_pair(cc, amb)]++; bc[make_pair(aa, bmc)]++; ca[make_pair(bb, cma)]++; abc[make_pair(amb, bmc)]++; } cout << res << endl; } |