#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"; } |
English