#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; } |
English