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
#include <bits/stdc++.h>

using namespace std;

int tab[3000004][3];
int pref[3000004][3];
int main(){
    string a;
    cin>>a;
   
    tab[0][a[0]%'a']++;
    for(int i=1; i<a.length(); i++){
        for(int j=0;j<3;j++)
            tab[i][j]=tab[i-1][j];
        tab[i][a[i]%'a']++;     
    }
    for(int i=1; i<=a.length(); i++){
        for(int j=0;j<3;j++)
            pref[i][j]+=tab[i-1][j];     
    }
    long long cnt=0;
    for(int i=1; i<=a.length(); i++){
        for(int j=i; j<=a.length(); j++){
            int a=pref[j][0]-pref[i-1][0],b=pref[j][1]-pref[i-1][1],c=pref[j][2]-pref[i-1][2];
            if((a==0 && b==0) || (b==0 && c==0) || (a==0 && c==0)){
                cnt++;
                continue;
            }
            if(a==0){
                if(b==c){ cnt++;
                }
                continue;
            }
            if(b==0){
                if(a==c){
                    cnt++;
                } 
                continue;
            }
            if(c==0){
                if(b==a){ cnt++;
                }
                continue;
            }
            else{
                if(a==b && b==c){
                    cnt++;
                    continue;
                }
            }
        }
    }
    cout<<cnt<<endl;
    return 0;
}