#include <cstdio>
#define MAXN 200005
#define CZYLITERA(c) (c >= 'a' && c <= 'z')
#define SAMOGLOSKA 1
#define SPOLGLOSKA 0
#define RODZAJ(c) ((c == 'a' || c == 'e' || c == 'i' || c == 'o'|| c == 'u' || c == 'y')?SAMOGLOSKA:SPOLGLOSKA)
#include <algorithm>
int main(){
char zyczenia[MAXN];
int l=0, r, najblizszy[MAXN];
while(true){
r = getchar();
if(r == EOF)
break;
if(CZYLITERA(r))
zyczenia[l++] = RODZAJ(r);
else
break;
}
int ile_poprz = 0, rodz = 0, ostatni = l;
long long wyn = 0;
for(int i=l-1;i>=0;i--){
if(zyczenia[i] == rodz)
ile_poprz++;
else{
ile_poprz = 1;
rodz = zyczenia[i];
}
if( ile_poprz >= 3 ){
ostatni = i;
}
najblizszy[i] = ostatni;
}
for(int i=0; i < l; i++){
wyn += std::max(l - najblizszy[i] - 2, 0);
}
printf("%lld",wyn);
}
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 | #include <cstdio> #define MAXN 200005 #define CZYLITERA(c) (c >= 'a' && c <= 'z') #define SAMOGLOSKA 1 #define SPOLGLOSKA 0 #define RODZAJ(c) ((c == 'a' || c == 'e' || c == 'i' || c == 'o'|| c == 'u' || c == 'y')?SAMOGLOSKA:SPOLGLOSKA) #include <algorithm> int main(){ char zyczenia[MAXN]; int l=0, r, najblizszy[MAXN]; while(true){ r = getchar(); if(r == EOF) break; if(CZYLITERA(r)) zyczenia[l++] = RODZAJ(r); else break; } int ile_poprz = 0, rodz = 0, ostatni = l; long long wyn = 0; for(int i=l-1;i>=0;i--){ if(zyczenia[i] == rodz) ile_poprz++; else{ ile_poprz = 1; rodz = zyczenia[i]; } if( ile_poprz >= 3 ){ ostatni = i; } najblizszy[i] = ostatni; } for(int i=0; i < l; i++){ wyn += std::max(l - najblizszy[i] - 2, 0); } printf("%lld",wyn); } |
English