#include<bits/stdc++.h> using namespace std; #define int long long #define PB push_back #define MP make_pair #define FI first #define SE second #define ST FI #define ND SE #define SZ(x) ((int)(x).size()) #define ALL(it, x) for(__typeof(x.begin()) it = x.begin(); it != x.end(); it++) #define REP(i, x) for (int i = 0; i < x; i++) #define FOR(i, x) for (int i = 1; i <= x; i++) #define BACK(i, x) for (int i = x; i; i--) typedef pair<int, int> PII; typedef vector<int> VI; typedef vector<VI> VVI; template<typename TH> void _dbg(const char* s, TH h) { cerr<<s<<"="<<h<<"\n"; } template<typename TH, typename... TA> void _dbg(const char* s, TH h, TA... t) { while(*s != ',') {cerr<<*s++;} cerr<<"="<<h<<","; _dbg(s+1, t...); } #ifdef LOCAL #define debug(...) _dbg(#__VA_ARGS__, __VA_ARGS__) #define debugv(x) {{cerr <<#x <<" = "; ALL(itt, (x)) cerr <<*itt <<", "; cerr <<"\n"; }} #else #define debug(...) (__VA_ARGS__) #define debugv(x) #define cerr if(0)cout #endif string s; int res = 0; int is_samo(char c) { if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'y') return 1; return 0; } int sub(int n) { return n * (n - 1) / 2 + n; } vector<int> cnts; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout << setprecision(7) << fixed; int n; cin >> s; n = s.size(); int last_good = 0; for (int i = 0; i < n; i++) { if (i >= 2 && is_samo(s[i]) == is_samo(s[i-1]) && is_samo(s[i]) == is_samo(s[i-2])) { last_good = i - 1; } int r = i - last_good + 1; debug(r); res += r; } cout << sub(n) - res << endl; }
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 62 63 64 65 66 67 68 69 70 | #include<bits/stdc++.h> using namespace std; #define int long long #define PB push_back #define MP make_pair #define FI first #define SE second #define ST FI #define ND SE #define SZ(x) ((int)(x).size()) #define ALL(it, x) for(__typeof(x.begin()) it = x.begin(); it != x.end(); it++) #define REP(i, x) for (int i = 0; i < x; i++) #define FOR(i, x) for (int i = 1; i <= x; i++) #define BACK(i, x) for (int i = x; i; i--) typedef pair<int, int> PII; typedef vector<int> VI; typedef vector<VI> VVI; template<typename TH> void _dbg(const char* s, TH h) { cerr<<s<<"="<<h<<"\n"; } template<typename TH, typename... TA> void _dbg(const char* s, TH h, TA... t) { while(*s != ',') {cerr<<*s++;} cerr<<"="<<h<<","; _dbg(s+1, t...); } #ifdef LOCAL #define debug(...) _dbg(#__VA_ARGS__, __VA_ARGS__) #define debugv(x) {{cerr <<#x <<" = "; ALL(itt, (x)) cerr <<*itt <<", "; cerr <<"\n"; }} #else #define debug(...) (__VA_ARGS__) #define debugv(x) #define cerr if(0)cout #endif string s; int res = 0; int is_samo(char c) { if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'y') return 1; return 0; } int sub(int n) { return n * (n - 1) / 2 + n; } vector<int> cnts; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout << setprecision(7) << fixed; int n; cin >> s; n = s.size(); int last_good = 0; for (int i = 0; i < n; i++) { if (i >= 2 && is_samo(s[i]) == is_samo(s[i-1]) && is_samo(s[i]) == is_samo(s[i-2])) { last_good = i - 1; } int r = i - last_good + 1; debug(r); res += r; } cout << sub(n) - res << endl; } |