//Damian Denc #include<bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); unsigned long long wynik=0; long long dl, tmpDl, i, l, r, a=0, p=0; //a = sAmogloski p=sPolgloski l=left r=right char sam[6]={'a', 'e', 'i', 'o', 'u', 'y'}; string ciag; vector<int>gdzie; //liczy koncowki cin >> ciag; dl=ciag.size(); tmpDl=dl; //-2 bo literki i -1 bo od 0 +1 bo < a nie <= bool *tab = new bool [dl]; // 1=sam 0=sp //zamiana na bool if(ciag[0]==sam[0] || ciag[0]==sam[1] || ciag[0]==sam[2] || ciag[0]==sam[3] || ciag[0]==sam[4] || ciag[0]==sam[5]) { tab[0]=true; a=1; } else { tab[0]=false; p=1; } if(ciag[1]==sam[0] || ciag[1]==sam[1] || ciag[1]==sam[2] || ciag[1]==sam[3] || ciag[1]==sam[4] || ciag[1]==sam[5]) { tab[1]=true; if(p!=0) p=0; ++a; } else { tab[1]=false; if(a!=0) a=0; ++p; } for(i=2;i<tmpDl;++i) { if(ciag[i]==sam[0] || ciag[i]==sam[1] || ciag[i]==sam[2] || ciag[i]==sam[3] || ciag[i]==sam[4] || ciag[i]==sam[5]) { tab[i]=true; if(p!=0) p=0; ++a; } else { tab[i]=false; if(a!=0) a=0; ++p; } if(a==3) { --a; gdzie.push_back(i); } else if(p==3) { --p; gdzie.push_back(i); } } int ile=gdzie.size(); if(ile==0) { cout << 0; return 0; } for(i=0;i<ile;++i) { if(i-1>=0) l=gdzie[i]-gdzie[i-1]; else l=gdzie[i]-1; //+2 -3 p=dl-gdzie[i]; wynik=wynik+(p*l); } cout << wynik; delete []tab; 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | //Damian Denc #include<bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); unsigned long long wynik=0; long long dl, tmpDl, i, l, r, a=0, p=0; //a = sAmogloski p=sPolgloski l=left r=right char sam[6]={'a', 'e', 'i', 'o', 'u', 'y'}; string ciag; vector<int>gdzie; //liczy koncowki cin >> ciag; dl=ciag.size(); tmpDl=dl; //-2 bo literki i -1 bo od 0 +1 bo < a nie <= bool *tab = new bool [dl]; // 1=sam 0=sp //zamiana na bool if(ciag[0]==sam[0] || ciag[0]==sam[1] || ciag[0]==sam[2] || ciag[0]==sam[3] || ciag[0]==sam[4] || ciag[0]==sam[5]) { tab[0]=true; a=1; } else { tab[0]=false; p=1; } if(ciag[1]==sam[0] || ciag[1]==sam[1] || ciag[1]==sam[2] || ciag[1]==sam[3] || ciag[1]==sam[4] || ciag[1]==sam[5]) { tab[1]=true; if(p!=0) p=0; ++a; } else { tab[1]=false; if(a!=0) a=0; ++p; } for(i=2;i<tmpDl;++i) { if(ciag[i]==sam[0] || ciag[i]==sam[1] || ciag[i]==sam[2] || ciag[i]==sam[3] || ciag[i]==sam[4] || ciag[i]==sam[5]) { tab[i]=true; if(p!=0) p=0; ++a; } else { tab[i]=false; if(a!=0) a=0; ++p; } if(a==3) { --a; gdzie.push_back(i); } else if(p==3) { --p; gdzie.push_back(i); } } int ile=gdzie.size(); if(ile==0) { cout << 0; return 0; } for(i=0;i<ile;++i) { if(i-1>=0) l=gdzie[i]-gdzie[i-1]; else l=gdzie[i]-1; //+2 -3 p=dl-gdzie[i]; wynik=wynik+(p*l); } cout << wynik; delete []tab; return 0; } |