#include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 5; int nastepny[maxn]; bool git(char x){ if(x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u' || x == 'y') return true; else return false; } int main(){ string a; cin >> a; int wsk = -1, licz = 1; bool jest = false, wyznacznik; wyznacznik = git(a[a.length() - 1]); for(int i = (int) a.length() - 2; i >= 0; i--){ if(git(a[i]) == wyznacznik) licz++; else licz = 1, wyznacznik = git(a[i]); if(licz == 3) wsk = i + 2; else if(licz > 3) wsk--; nastepny[i] = wsk; } long long wynik = 0LL; for(int i = 0; i < (int) a.length() - 1; i++){ if(nastepny[i] > 0) wynik += ((int) a.length() - nastepny[i]); } printf("%lld\n", wynik); }
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 | #include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 5; int nastepny[maxn]; bool git(char x){ if(x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u' || x == 'y') return true; else return false; } int main(){ string a; cin >> a; int wsk = -1, licz = 1; bool jest = false, wyznacznik; wyznacznik = git(a[a.length() - 1]); for(int i = (int) a.length() - 2; i >= 0; i--){ if(git(a[i]) == wyznacznik) licz++; else licz = 1, wyznacznik = git(a[i]); if(licz == 3) wsk = i + 2; else if(licz > 3) wsk--; nastepny[i] = wsk; } long long wynik = 0LL; for(int i = 0; i < (int) a.length() - 1; i++){ if(nastepny[i] > 0) wynik += ((int) a.length() - nastepny[i]); } printf("%lld\n", wynik); } |