#define _CRT_SECURE_NO_WARNINGS
#include <vector>
#include <stdio.h>
#define FOR(i,n) for(int i=0;i<n;++i)
const char samo[6] = { 'a', 'e', 'i', 'o', 'u', 'y' };
bool isSamo(char a)
{
FOR(i, 6)
{
if (a == samo[i]) return true;
}
return false;
}
char tekst[300015] = { 0 };
int main()
{
scanf("%s", &tekst);
long long len = 0;
while (tekst[len] != 0) len++;
long long dobre = 3;
int j = 0;
std::vector<int> badSector;
FOR(i, len - 2)
{
if(isSamo(tekst[i]) && isSamo(tekst[i + 1]) && isSamo(tekst[i + 2]))
{ badSector.push_back(i); }
else if (isSamo(tekst[i]) == false && isSamo(tekst[i + 1]) ==false && isSamo(tekst
[i + 2]) == false)
{
badSector.push_back(i);
}
}
if (len < 3)
{
printf("0\n");
}
badSector.push_back(len - 2);
long long all = (len * (len + 1)) / 2;
FOR(i, len - 2)
{
if (i > badSector[j])
{
j++;
}
dobre += 2;
dobre += badSector[j] - i;
}
long long wynik = all - dobre;
printf("%lld\n", wynik);
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 | #define _CRT_SECURE_NO_WARNINGS #include <vector> #include <stdio.h> #define FOR(i,n) for(int i=0;i<n;++i) const char samo[6] = { 'a', 'e', 'i', 'o', 'u', 'y' }; bool isSamo(char a) { FOR(i, 6) { if (a == samo[i]) return true; } return false; } char tekst[300015] = { 0 }; int main() { scanf("%s", &tekst); long long len = 0; while (tekst[len] != 0) len++; long long dobre = 3; int j = 0; std::vector<int> badSector; FOR(i, len - 2) { if(isSamo(tekst[i]) && isSamo(tekst[i + 1]) && isSamo(tekst[i + 2])) { badSector.push_back(i); } else if (isSamo(tekst[i]) == false && isSamo(tekst[i + 1]) ==false && isSamo(tekst [i + 2]) == false) { badSector.push_back(i); } } if (len < 3) { printf("0\n"); } badSector.push_back(len - 2); long long all = (len * (len + 1)) / 2; FOR(i, len - 2) { if (i > badSector[j]) { j++; } dobre += 2; dobre += badSector[j] - i; } long long wynik = all - dobre; printf("%lld\n", wynik); return 0; } |
English