#include <bits/stdc++.h> using namespace std; typedef long long int lli; const int MAXN = 500005; char t[MAXN]; vector<lli> v; bool isVov(char a) { return (a == 'a') || (a == 'e') || (a == 'i') || (a == 'o') || (a == 'u') || (a == 'y'); } int main() { scanf("%s", t); lli n = strlen(t); v.push_back(-1); for (int i=0; i+2<n; i++) { bool ok = 0; if (isVov(t[i]) && isVov(t[i+1]) && isVov(t[i+2])) ok = 1; if (!isVov(t[i]) && !isVov(t[i+1]) && !isVov(t[i+2])) ok = 1; if (ok) v.push_back(i); } lli w = 0; for (int i=1; i<(int)v.size(); i++) { w += (v[i]-v[i-1])*(n-v[i]-2); } printf("%lld\n", w); 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 | #include <bits/stdc++.h> using namespace std; typedef long long int lli; const int MAXN = 500005; char t[MAXN]; vector<lli> v; bool isVov(char a) { return (a == 'a') || (a == 'e') || (a == 'i') || (a == 'o') || (a == 'u') || (a == 'y'); } int main() { scanf("%s", t); lli n = strlen(t); v.push_back(-1); for (int i=0; i+2<n; i++) { bool ok = 0; if (isVov(t[i]) && isVov(t[i+1]) && isVov(t[i+2])) ok = 1; if (!isVov(t[i]) && !isVov(t[i+1]) && !isVov(t[i+2])) ok = 1; if (ok) v.push_back(i); } lli w = 0; for (int i=1; i<(int)v.size(); i++) { w += (v[i]-v[i-1])*(n-v[i]-2); } printf("%lld\n", w); return 0; } |