#include <iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
void zamien(string tekst,vector<bool> &tab){
int dl=tekst.length();
char c;
for(int i=0;i<dl;i++){
c=tekst[i];
if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c=='y'){
tab.push_back(1);
}else{
tab.push_back(0);
}
}
}
void wypisz(vector<bool> &tab){
for(bool n : tab){//int i=tab.begin(); i!=tab.end();++i){
cout<<n;
}
}
/*
void zamienTrudno(vector<bool> &tab){
vector<bool> nowa;
//usuwa dwa pierwsze z poczatku (zawsze ³atwe)
reverse(tab.begin(), tab.end());
bool p=tab.back();//przedostatnia
tab.pop_back();
bool o=tab.back();//ostatnia
tab.pop_back();
reverse(tab.begin(), tab.end());
//ustawia dwa pierwsze na zawsze ³atwe
nowa.push_back(0);
for(bool n : tab){//int i=tab.begin(); i!=tab.end();++i){
if(p==n && o==n){
nowa.push_back(1);
}else{
nowa.push_back(0);
}
p=o;
o=n;
}
nowa.push_back(0);
tab.swap(nowa);
}
*/
bool spr(vector<bool> &tab, int pocz, int konc){
for(int i=pocz;i<=konc-3; i++){
if((tab[i]==0 && tab[i+1]==0 && tab[i+2]==0)||(tab[i]==1 && tab[i+1]==1 && tab[i+2]==1)){
//cout<<pocz<<' '<<konc<<endl;
return true;
}
}
return false;
}
int licz(vector<bool> &tab, int maks){
int licznik=0;
for(int i=3;i<=maks;i++){
for(int j=0; j<=maks-i;j++){
licznik+=spr(tab, j, j+i);
//cout<<licznik;
}
}
return licznik;
}
int main()
{
string tekst;
vector<bool>tab;
cin>>tekst;
int len = tekst.length();
zamien(tekst,tab);
//zamienTrudno(tab);
cout<<licz(tab, len);
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 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 81 | #include <iostream> #include<string> #include<vector> #include<algorithm> using namespace std; void zamien(string tekst,vector<bool> &tab){ int dl=tekst.length(); char c; for(int i=0;i<dl;i++){ c=tekst[i]; if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c=='y'){ tab.push_back(1); }else{ tab.push_back(0); } } } void wypisz(vector<bool> &tab){ for(bool n : tab){//int i=tab.begin(); i!=tab.end();++i){ cout<<n; } } /* void zamienTrudno(vector<bool> &tab){ vector<bool> nowa; //usuwa dwa pierwsze z poczatku (zawsze ³atwe) reverse(tab.begin(), tab.end()); bool p=tab.back();//przedostatnia tab.pop_back(); bool o=tab.back();//ostatnia tab.pop_back(); reverse(tab.begin(), tab.end()); //ustawia dwa pierwsze na zawsze ³atwe nowa.push_back(0); for(bool n : tab){//int i=tab.begin(); i!=tab.end();++i){ if(p==n && o==n){ nowa.push_back(1); }else{ nowa.push_back(0); } p=o; o=n; } nowa.push_back(0); tab.swap(nowa); } */ bool spr(vector<bool> &tab, int pocz, int konc){ for(int i=pocz;i<=konc-3; i++){ if((tab[i]==0 && tab[i+1]==0 && tab[i+2]==0)||(tab[i]==1 && tab[i+1]==1 && tab[i+2]==1)){ //cout<<pocz<<' '<<konc<<endl; return true; } } return false; } int licz(vector<bool> &tab, int maks){ int licznik=0; for(int i=3;i<=maks;i++){ for(int j=0; j<=maks-i;j++){ licznik+=spr(tab, j, j+i); //cout<<licznik; } } return licznik; } int main() { string tekst; vector<bool>tab; cin>>tekst; int len = tekst.length(); zamien(tekst,tab); //zamienTrudno(tab); cout<<licz(tab, len); return 0; } |
English