#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; } |