#include <string> #include <iostream> #include <vector> #include <set> #define MAX 1000009 using namespace std; set<char> vowels = {'a', 'e', 'i', 'o', 'u', 'y'}; bool isThreeCons(string &input, int i) { for (int j=0; j<3; j++) { if (vowels.count(input[i+j])) return false; } return true; } bool isThreeVow(string &input, int i) { for (int j=0; j<3; j++) { if (!vowels.count(input[i+j])) return false; } return true; } int main() { long long result = 0; vector<int> intervals; string s; cin >> s; int len = s.length(), counter = 0; for (int i=0; i<len-2; i++) { if (isThreeCons(s, i) || isThreeVow(s, i)) { intervals.push_back(counter); counter = 0; } else { counter++; } } intervals.push_back(counter); long long sum = 0; for (int i=0; i<intervals.size()-1; i++) { sum += intervals[i] + 1; result += (sum) * (intervals[i+1] + 1); } cout << result; }
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 | #include <string> #include <iostream> #include <vector> #include <set> #define MAX 1000009 using namespace std; set<char> vowels = {'a', 'e', 'i', 'o', 'u', 'y'}; bool isThreeCons(string &input, int i) { for (int j=0; j<3; j++) { if (vowels.count(input[i+j])) return false; } return true; } bool isThreeVow(string &input, int i) { for (int j=0; j<3; j++) { if (!vowels.count(input[i+j])) return false; } return true; } int main() { long long result = 0; vector<int> intervals; string s; cin >> s; int len = s.length(), counter = 0; for (int i=0; i<len-2; i++) { if (isThreeCons(s, i) || isThreeVow(s, i)) { intervals.push_back(counter); counter = 0; } else { counter++; } } intervals.push_back(counter); long long sum = 0; for (int i=0; i<intervals.size()-1; i++) { sum += intervals[i] + 1; result += (sum) * (intervals[i+1] + 1); } cout << result; } |