#include <bits/stdc++.h> using namespace std; typedef long long ll; inline bool is_vowel(char c){ return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'y'); } int check_sequence(string& s, int pos) { bool b1 = is_vowel(s[pos]); bool b2 = is_vowel(s[pos-1]); bool b3 = is_vowel(s[pos-2]); //cerr << "checking: " << pos << " " << s.substr(pos-2, 3) << endl; return (b1 && b2 && b3) || (!b1 && !b2 && !b3); } int main() { ios_base::sync_with_stdio(false); string s; cin >> s; if(s.size() < 3){ cout << 0 << endl; return 0; } ll init_seq = check_sequence(s, 2); ll counter = init_seq; ll current_seq_pos = init_seq == 0 ? 1 : 2; for(ll i = 3; i < s.size(); ++i) { //cerr << "Current_seq_pos: " << current_seq_pos << " counter " << counter << endl; if(check_sequence(s, i)){ //cerr << "is new sequence, will add: " << i-2 << endl; counter += i-1; current_seq_pos = i; } else { //cerr << "is not a new sequence, will add: " << current_seq_pos-2+1 << endl; counter += current_seq_pos-2+1; } } cout << counter << endl; 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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; inline bool is_vowel(char c){ return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'y'); } int check_sequence(string& s, int pos) { bool b1 = is_vowel(s[pos]); bool b2 = is_vowel(s[pos-1]); bool b3 = is_vowel(s[pos-2]); //cerr << "checking: " << pos << " " << s.substr(pos-2, 3) << endl; return (b1 && b2 && b3) || (!b1 && !b2 && !b3); } int main() { ios_base::sync_with_stdio(false); string s; cin >> s; if(s.size() < 3){ cout << 0 << endl; return 0; } ll init_seq = check_sequence(s, 2); ll counter = init_seq; ll current_seq_pos = init_seq == 0 ? 1 : 2; for(ll i = 3; i < s.size(); ++i) { //cerr << "Current_seq_pos: " << current_seq_pos << " counter " << counter << endl; if(check_sequence(s, i)){ //cerr << "is new sequence, will add: " << i-2 << endl; counter += i-1; current_seq_pos = i; } else { //cerr << "is not a new sequence, will add: " << current_seq_pos-2+1 << endl; counter += current_seq_pos-2+1; } } cout << counter << endl; return 0; } |