//Damian Denc
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
unsigned long long wynik=0;
long long dl, tmpDl, i, l, r, a=0, p=0;
//a = sAmogloski p=sPolgloski l=left r=right
char sam[6]={'a', 'e', 'i', 'o', 'u', 'y'};
string ciag;
vector<int>gdzie; //liczy koncowki
cin >> ciag;
dl=ciag.size();
tmpDl=dl; //-2 bo literki i -1 bo od 0 +1 bo < a nie <=
bool *tab = new bool [dl]; // 1=sam 0=sp
//zamiana na bool
if(ciag[0]==sam[0] || ciag[0]==sam[1] || ciag[0]==sam[2] || ciag[0]==sam[3] || ciag[0]==sam[4] || ciag[0]==sam[5])
{
tab[0]=true;
a=1;
}
else
{
tab[0]=false;
p=1;
}
if(ciag[1]==sam[0] || ciag[1]==sam[1] || ciag[1]==sam[2] || ciag[1]==sam[3] || ciag[1]==sam[4] || ciag[1]==sam[5])
{
tab[1]=true;
if(p!=0)
p=0;
++a;
}
else
{
tab[1]=false;
if(a!=0)
a=0;
++p;
}
for(i=2;i<tmpDl;++i)
{
if(ciag[i]==sam[0] || ciag[i]==sam[1] || ciag[i]==sam[2] || ciag[i]==sam[3] || ciag[i]==sam[4] || ciag[i]==sam[5])
{
tab[i]=true;
if(p!=0)
p=0;
++a;
}
else
{
tab[i]=false;
if(a!=0)
a=0;
++p;
}
if(a==3)
{
--a;
gdzie.push_back(i);
}
else if(p==3)
{
--p;
gdzie.push_back(i);
}
}
int ile=gdzie.size();
if(ile==0)
{
cout << 0;
return 0;
}
for(i=0;i<ile;++i)
{
if(i-1>=0)
l=gdzie[i]-gdzie[i-1];
else
l=gdzie[i]-1; //+2 -3
p=dl-gdzie[i];
wynik=wynik+(p*l);
}
cout << wynik;
delete []tab;
return 0;
}
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 | //Damian Denc #include<bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); unsigned long long wynik=0; long long dl, tmpDl, i, l, r, a=0, p=0; //a = sAmogloski p=sPolgloski l=left r=right char sam[6]={'a', 'e', 'i', 'o', 'u', 'y'}; string ciag; vector<int>gdzie; //liczy koncowki cin >> ciag; dl=ciag.size(); tmpDl=dl; //-2 bo literki i -1 bo od 0 +1 bo < a nie <= bool *tab = new bool [dl]; // 1=sam 0=sp //zamiana na bool if(ciag[0]==sam[0] || ciag[0]==sam[1] || ciag[0]==sam[2] || ciag[0]==sam[3] || ciag[0]==sam[4] || ciag[0]==sam[5]) { tab[0]=true; a=1; } else { tab[0]=false; p=1; } if(ciag[1]==sam[0] || ciag[1]==sam[1] || ciag[1]==sam[2] || ciag[1]==sam[3] || ciag[1]==sam[4] || ciag[1]==sam[5]) { tab[1]=true; if(p!=0) p=0; ++a; } else { tab[1]=false; if(a!=0) a=0; ++p; } for(i=2;i<tmpDl;++i) { if(ciag[i]==sam[0] || ciag[i]==sam[1] || ciag[i]==sam[2] || ciag[i]==sam[3] || ciag[i]==sam[4] || ciag[i]==sam[5]) { tab[i]=true; if(p!=0) p=0; ++a; } else { tab[i]=false; if(a!=0) a=0; ++p; } if(a==3) { --a; gdzie.push_back(i); } else if(p==3) { --p; gdzie.push_back(i); } } int ile=gdzie.size(); if(ile==0) { cout << 0; return 0; } for(i=0;i<ile;++i) { if(i-1>=0) l=gdzie[i]-gdzie[i-1]; else l=gdzie[i]-1; //+2 -3 p=dl-gdzie[i]; wynik=wynik+(p*l); } cout << wynik; delete []tab; return 0; } |
English