#include <bits/stdc++.h> using namespace std; vector <int> czy; // czy ostatnie 3 znaki sa tego samego typu bool typ(char &c){ return (c == 'a' || c == 'i' || c == 'o' || c == 'u' || c == 'y' || c == 'e'); } bool CzyOK(char a, char b, char c){ return (typ(a) == typ(b) && typ(a) == typ(c)); } string s; int n; int main(){ cin >> s; n = s.size(); czy.resize(n+2); for (int i = 0; i <= n-3; i++){ czy[i] = CzyOK(s[i], s[i+1], s[i+2]); } int ost = n; for (int i = n-1; i>=0; i--){ // cout << i << " i " << ost << " ost\n"; if (czy[i] == 1){ ost = i; czy[i] = i; } czy[i] = ost; } long long wynik = 0; for (int i = 0; i <= n-3; i++){ wynik += max((n - czy[i] - 2), 0); } cout << wynik << "\n"; }
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 | #include <bits/stdc++.h> using namespace std; vector <int> czy; // czy ostatnie 3 znaki sa tego samego typu bool typ(char &c){ return (c == 'a' || c == 'i' || c == 'o' || c == 'u' || c == 'y' || c == 'e'); } bool CzyOK(char a, char b, char c){ return (typ(a) == typ(b) && typ(a) == typ(c)); } string s; int n; int main(){ cin >> s; n = s.size(); czy.resize(n+2); for (int i = 0; i <= n-3; i++){ czy[i] = CzyOK(s[i], s[i+1], s[i+2]); } int ost = n; for (int i = n-1; i>=0; i--){ // cout << i << " i " << ost << " ost\n"; if (czy[i] == 1){ ost = i; czy[i] = i; } czy[i] = ost; } long long wynik = 0; for (int i = 0; i <= n-3; i++){ wynik += max((n - czy[i] - 2), 0); } cout << wynik << "\n"; } |