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