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
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

unsigned long long int f( unsigned long long int n )
{
    unsigned long long wynik = (n+1);
    wynik *= n;
    wynik /= 2;
    return wynik;
}

int tab[700];

int main()
{
    ios_base::sync_with_stdio(0);
    string n;
    cin >> n;

    tab['a'] = 100;
    tab['i'] = 100;
    tab['e'] = 100;
    tab['o'] = 100;
    tab['u'] = 100;
    tab['y'] = 100;

    unsigned long long wynik;
    int p = 0, k = 0, r = 0;
    wynik = f(n.size());
    while( k < n.size() )
    {
        if( k - p + 1 > 2 )
        {
            if( tab[ n[k] ] == tab[ n[k-1] ] && tab[ n[k-1] ] == tab[ n[k-2] ] )
            {
                k = k - 1;
                wynik = wynik - f( k - p + 1 );
                r ++;
                p = k;
            }
            else if( k == n.size() - 1 )
            {
                wynik = wynik - f( k - p + 1 );
                r ++;
            }
        }
        else if( k == n.size() - 1 )
        {
            wynik = wynik - f( k - p + 1 );
            r ++;
        }
        k ++;
    }
    wynik += (r - 1);
    cout << wynik;
    return 0;
}