#include <iostream>
#include<vector>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
string a;
vector <bool> b;
cin >> a;
int n=a.size();
b.resize(n,0);
for (int i =0; i<n;i++){
if (a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='y'){
b[i]=1;
}
}
/*for (int i=0; i<n;i++){
cout << b[i];
}
cout << endl;*/
long long wynik=0;
int tmp=0;
int tmp2=0;
bool czek=0;
int t[n];
t[0]=0;
t[1]=0;
if (n>2){
for (int i=2; i<n;i++){
int tmp=0;
int tmp2=0;
for (int j=0; j<3;j++){
if (b[i-j]){
tmp++;
tmp2=0;
}else{
tmp2++;
tmp=0;
}
}
if (tmp==3 || tmp2==3){
t[i]=t[i-1]+1;
}else{
t[i]=t[i-1];
}
}
/*for (int i=0; i<n;i++){
cout << t[i];
}
cout << endl;*/
int tmp3=-1;
int t2[n];
int t3[n];
for (int i=n-1; i>0;i--){
if (t[i-1]!=t[i]){
tmp3=i;
}
t2[i]=tmp3;
}
for (int i=0;i+2<n;i++){
t3[i]=t2[i+2];
}
/*for (int i=0; i<n;i++){
cout << t2[i]<<" ";
}
cout << endl;
for (int i=0; i<n;i++){
cout << t3[i]<<" ";
}
cout << endl;*/
for (int i=0; i+2<n ;i++){
int b=t3[i];
if (t[b]==t[i+1]+1){
wynik+=n-b;
}
//cout <<i<<" "<< b<<" "<<n-b<<endl;
}
}
cout << wynik<<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 71 72 73 74 75 76 77 78 79 80 | #include <iostream> #include<vector> using namespace std; int main(){ ios_base::sync_with_stdio(0); string a; vector <bool> b; cin >> a; int n=a.size(); b.resize(n,0); for (int i =0; i<n;i++){ if (a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='y'){ b[i]=1; } } /*for (int i=0; i<n;i++){ cout << b[i]; } cout << endl;*/ long long wynik=0; int tmp=0; int tmp2=0; bool czek=0; int t[n]; t[0]=0; t[1]=0; if (n>2){ for (int i=2; i<n;i++){ int tmp=0; int tmp2=0; for (int j=0; j<3;j++){ if (b[i-j]){ tmp++; tmp2=0; }else{ tmp2++; tmp=0; } } if (tmp==3 || tmp2==3){ t[i]=t[i-1]+1; }else{ t[i]=t[i-1]; } } /*for (int i=0; i<n;i++){ cout << t[i]; } cout << endl;*/ int tmp3=-1; int t2[n]; int t3[n]; for (int i=n-1; i>0;i--){ if (t[i-1]!=t[i]){ tmp3=i; } t2[i]=tmp3; } for (int i=0;i+2<n;i++){ t3[i]=t2[i+2]; } /*for (int i=0; i<n;i++){ cout << t2[i]<<" "; } cout << endl; for (int i=0; i<n;i++){ cout << t3[i]<<" "; } cout << endl;*/ for (int i=0; i+2<n ;i++){ int b=t3[i]; if (t[b]==t[i+1]+1){ wynik+=n-b; } //cout <<i<<" "<< b<<" "<<n-b<<endl; } } cout << wynik<<endl; } |
English