#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
int nastepny[maxn];
bool git(char x){
if(x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u' || x == 'y') return true;
else return false;
}
int main(){
string a;
cin >> a;
int wsk = -1, licz = 1;
bool jest = false, wyznacznik;
wyznacznik = git(a[a.length() - 1]);
for(int i = (int) a.length() - 2; i >= 0; i--){
if(git(a[i]) == wyznacznik) licz++;
else licz = 1, wyznacznik = git(a[i]);
if(licz == 3) wsk = i + 2;
else if(licz > 3) wsk--;
nastepny[i] = wsk;
}
long long wynik = 0LL;
for(int i = 0; i < (int) a.length() - 1; i++){
if(nastepny[i] > 0) wynik += ((int) a.length() - nastepny[i]);
}
printf("%lld\n", wynik);
}
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 | #include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 5; int nastepny[maxn]; bool git(char x){ if(x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u' || x == 'y') return true; else return false; } int main(){ string a; cin >> a; int wsk = -1, licz = 1; bool jest = false, wyznacznik; wyznacznik = git(a[a.length() - 1]); for(int i = (int) a.length() - 2; i >= 0; i--){ if(git(a[i]) == wyznacznik) licz++; else licz = 1, wyznacznik = git(a[i]); if(licz == 3) wsk = i + 2; else if(licz > 3) wsk--; nastepny[i] = wsk; } long long wynik = 0LL; for(int i = 0; i < (int) a.length() - 1; i++){ if(nastepny[i] > 0) wynik += ((int) a.length() - nastepny[i]); } printf("%lld\n", wynik); } |
English