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