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

using namespace std;
#define int long long

set<char> vowels{'a', 'e', 'i', 'o', 'u', 'y'};

main() {
    string s;
    cin >> s;
    vector<bool> endTriple(s.size(), false);

    for (int i = 2; i < endTriple.size(); i++) {
        if (vowels.count(s[i]) && vowels.count(s[i - 1]) && vowels.count(s[i - 2])) {
            endTriple[i] = true;
        }

        if (!vowels.count(s[i]) && !vowels.count(s[i - 1]) && !vowels.count(s[i - 2])) {
            endTriple[i] = true;
        }
    }

    int last = s.size();
    int res = 0;
    for (int i = s.size() - 1; i >= 2; i--) {
        if (endTriple[i]) {
            int left = i - 1;
            int right = last - i;
            res += left * right;
            last = i;
        }
    }
    cout << res << endl;
}