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
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <vector>
#include <string>

using namespace std;

const vector<char> samogloski = {'a','o','i', 'y', 'e', 'u'};
const uint32_t ile_liter = 26; // liczba wszystkich liter w alfabecie

uint64_t ile_podciagow(uint64_t n) // n - dlugosc ciagu
{
    return n*(n+1)/2;
}

bool czy_samogloska(char litera)
{
    for (auto it = samogloski.begin(); it!= samogloski.end(); ++it)
    {
        if (litera == *it)
            return true;
    }
    return false;
}


int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

    string tekst;
    cin >> tekst;

    uint32_t licznik = 0; // licznik kolejnych samoglosek / spolglosek
    bool czy_samogloski = false; // czy ostatnie zliczane litery to samogloska
    uint64_t ile_latwych = 0; // liczba wszystkich latwych do przeczytania podciagow
    uint32_t dl_tekstu = 0;
    string::iterator it_pocz = tekst.begin(); // indeks poczatku latwego tekstu


    for (string::iterator it = tekst.begin(); it!= tekst.end(); ++it)
    {
        dl_tekstu++;

        if(czy_samogloska(*it) == czy_samogloski) // nowa litera tego samego typu co poprzednia
            licznik++;
        else // nowa litera innego typu
        {
            if (licznik >=3)
                it_pocz = it-2; // nowy poczatek latwego tekstu;

            czy_samogloski = !czy_samogloski;
            licznik=1;
        }

        if (licznik<3)
        {
            // dodajemy liczbe latwych slow konczacych sie obecna literka
            uint64_t nowe_latwe = (it - it_pocz) +1;
            ile_latwych += nowe_latwe;
        }
        else // licznik>=3
        {
            // latwe slowa konczace sie ta literka sa co najwyzej 2-literowe
            ile_latwych += 2;
        }
    }

    uint64_t ile_trudnych = ile_podciagow(dl_tekstu) - ile_latwych;
//    cout<< ile_podciagow(dl_tekstu) <<' '<< ile_latwych<<' ';
    cout<< ile_trudnych<<endl;

    return 0;
}