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
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <bits/stdc++.h>

using namespace std;
string a;
int j;
long long sp,ma,naj,sa,co[1000005],wynik,wyn,koniec,pocz,ostkoniec;
int main()
{
    ios_base::sync_with_stdio(0);
   cin>>a;
   for(int i=0;i<a.size();i++)
   {
       if(a[i]=='a'||a[i]=='e'||a[i]=='u'||a[i]=='o'||a[i]=='i'||a[i]=='y')
       {
           if(sp>=3&&sp>=ma)
           {
               ma=sp;
               naj=(i-1)-(i-sp)-3;
           }
           sp=0;
           sa++;
       }
       else
       {
           if(sa>=3&&sa>=ma)
           {
               ma=sa;
               naj=(i-1)-(i-sa)-3;
           }
           sa=0;
           sp++;
       }
      // cout<<sp<<' '<<sa<<endl;
    }
     if(sp>=3&&sp>=ma)
           {
               ma=sp;
               naj=(a.size()-1)-(a.size()-sp)-3;
           }
        if(sa>=3&&sa>=ma)
       {
           ma=sa;
           naj=(a.size()-1)-(a.size()-sa)-3;
       }
   // cout<<naj<<' '<<ma;

    for(int i=1;i<=naj;i++)
    {
        co[i]=co[i-1]+i;
      //  cout<<co[i]<<' ';
    }
    sa=0;sp=0;
    for(int i=0;i<a.size();i++)
    {
        j=i+1;
        wyn=0;koniec=0;pocz=0;
        if(a[i]=='a'||a[i]=='e'||a[i]=='u'||a[i]=='o'||a[i]=='i'||a[i]=='y')
        {
            if(sp>=3)
            {
                koniec=j-1;
                pocz=j-sp;
                wyn=pocz*(a.size()-1-pocz)+(koniec-pocz-2)*(a.size()-koniec+1);
                if(koniec-pocz-3>=0) wyn+=co[koniec-pocz-3];
                //cout<<wyn<<"!!";
                 if(ostkoniec!=0) wyn-=(ostkoniec-2)*(a.size()-pocz-1);
                wynik+=wyn;
                ostkoniec=koniec;
            }
            sp=0;
            sa++;
        }
        else
        {
            if(sa>=3)
            {
                koniec=j-1;
                pocz=j -sa;
                wyn=pocz*(a.size()-1-pocz)+(koniec-pocz-2)*(a.size()-koniec+1);
                if(koniec-pocz-3>=0) wyn+=co[koniec-pocz-3];
               // cout<<wyn<<"!!!";
               if(ostkoniec!=0) wyn-=(ostkoniec-2)*(a.size()-pocz-1);
                wynik+=wyn;

                ostkoniec=koniec;
            }
            sa=0;
            sp++;
        }
       // cout<<koniec<<' '<<pocz<<' '<<sa<<' '<<sp<<' '<<wynik<<endl;
    }
    if(sp>=3)
    {
        koniec=a.size();
        pocz=a.size()-sp+1;
        wyn=pocz*(a.size()-1-pocz)+(koniec-pocz-2)*(a.size()-koniec+1);
        if(koniec-pocz-3>=0) wyn+=co[koniec-pocz-3];
         if(ostkoniec!=0) wyn-=(ostkoniec-2)*(a.size()-pocz-1);

        wynik+=wyn;
    }
    if(sa>=3)
    {
        koniec=a.size();
        pocz=a.size()-sa+1;
        wyn=pocz*(a.size()-1-pocz)+(koniec-pocz-2)*(a.size()-koniec+1);
        if(koniec-pocz-3>=0) wyn+=co[koniec-pocz-3];
         if(ostkoniec!=0) wyn-=(ostkoniec-2)*(a.size()-pocz-1);

        wynik+=wyn;
    }
      //cout<<koniec<<' '<<pocz<<' '<<sa<<' '<<sp<<' '<<wynik<<endl;
    cout<<wynik;
}