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
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e5+9;
string s;
int tab[4], wynik, ile[N];
int32_t main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>s;
	for(int d=1; d<=s.size(); d++){
		for(int i=0; i<d; i++){
			ile[tab[s[i]-'a']]--;
			tab[s[i]-'a']++;
			ile[tab[s[i]-'a']]++;
		}
		if(ile[tab[s[d-1]-'a']]*tab[s[d-1]-'a']==d)
			wynik++;
		for(int i=d; i<s.size(); i++){
			ile[tab[s[i]-'a']]--;
			tab[s[i]-'a']++;
			ile[tab[s[i]-'a']]++;

			ile[tab[s[i-d]-'a']]--;
			tab[s[i-d]-'a']--;
			ile[tab[s[i-d]-'a']]++;

			if(ile[tab[s[i]-'a']]*tab[s[i]-'a']==d)
				wynik++;
		}
		for(int i=0; i<3; i++){
			ile[tab[i]]=0;
			tab[i]=0;
		}
	}
	cout<<wynik<<"\n";
	return 0;
}