#include <stdio.h> char tt[200002]; long long int d; long long int a[100000],b[100000]; long long int k,r; void wczytaj(void) { int i,j,z; scanf("%s",tt); i=0; while(tt[i]>='a' && tt[i]<='z') i++; d=i; for(i=d;i>=1;i--) if(tt[i-1]=='a' || tt[i-1]=='e' || tt[i-1]=='i' || tt[i-1]=='o' || tt[i-1]=='u' || tt[i-1]=='y') tt[i]=0; else tt[i]=1; tt[d+1]=-1; k=0; i=1; if(d>2) { while(i<d) { j=0; z=tt[i]; while((i+j<=d) && (tt[i+j]==z)) j++; if(j>=3) {a[k]=i; b[k]=i+j-1; k++;} i+=j; } } return; } int main() { int i,m; long long int S=0; r=0; wczytaj(); for(i=0;i<k;++i) { S = S + (a[i]-r)*(d-a[i]-1); m = b[i]-a[i]-2; if (m>0) S = S + (m*(2*d-a[i]-b[i]-1))/2; r=b[i]-2; } printf("%lld\n",S); 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 | #include <stdio.h> char tt[200002]; long long int d; long long int a[100000],b[100000]; long long int k,r; void wczytaj(void) { int i,j,z; scanf("%s",tt); i=0; while(tt[i]>='a' && tt[i]<='z') i++; d=i; for(i=d;i>=1;i--) if(tt[i-1]=='a' || tt[i-1]=='e' || tt[i-1]=='i' || tt[i-1]=='o' || tt[i-1]=='u' || tt[i-1]=='y') tt[i]=0; else tt[i]=1; tt[d+1]=-1; k=0; i=1; if(d>2) { while(i<d) { j=0; z=tt[i]; while((i+j<=d) && (tt[i+j]==z)) j++; if(j>=3) {a[k]=i; b[k]=i+j-1; k++;} i+=j; } } return; } int main() { int i,m; long long int S=0; r=0; wczytaj(); for(i=0;i<k;++i) { S = S + (a[i]-r)*(d-a[i]-1); m = b[i]-a[i]-2; if (m>0) S = S + (m*(2*d-a[i]-b[i]-1))/2; r=b[i]-2; } printf("%lld\n",S); return 0; } |