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
#include <cstdio>
#include <string.h>

using namespace std;

int T[300];
char A[1000000];

long long calc(long long b, long long e) {
    e -= b;
    if (e<=0) return 0;
    return e*(e+1)/2;
}

int main() {
    for (int i=0; i<256; i++) T[i]=0;
    T['a']=T['e']=T['i']=T['o']=T['u']=T['y']=1;

    scanf("%s", A);
    long long n = strlen(A);
    if (n <= 2) {
        printf("0\n");
        return 0;
    }
    long long c = 0;
    long long p = -1;
    for (long long i=0; i<=n-3; i++)
        if (T[A[i]]==T[A[i+1]] && T[A[i+1]]==T[A[i+2]]) {
            if (p<0) c += calc(0, i);
                else {
                    if (p+3<i) {
                        c += calc(p, i-1);
                    }
                }
            p=i;
        }
    if (p<0) c += calc(0, n-2);
        else c += calc(p, n-3);
    printf("%lld\n", (n-2)*(n-1)/2-c);
    return 0;
}