#include <bits/stdc++.h> #define forn(i, n) for(int i = 0; i < n; ++i) using namespace std; typedef long long ll; typedef pair<int, int> pint; string s; int nast[200042]; bool samogloska(int i) { return (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'y'); } bool check(int i) { return (samogloska(i) && samogloska(i+1) && samogloska(i+2)) || (!samogloska(i) && !samogloska(i+1) && !samogloska(i+2)); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> s; vector<int> pozycje = {-1}; int i=0; while (i < s.size()) { int j = i; while (j < s.size()-2 && !check(j)) j++; while (i <= j) { nast[i] = j; i++; } } ll bad = s.size()*(s.size() + 1LL) / 2LL; for (int i=0; i<s.size()-1; i++) bad -= (nast[i] - i + 2); bad--; cout << bad; 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 | #include <bits/stdc++.h> #define forn(i, n) for(int i = 0; i < n; ++i) using namespace std; typedef long long ll; typedef pair<int, int> pint; string s; int nast[200042]; bool samogloska(int i) { return (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'y'); } bool check(int i) { return (samogloska(i) && samogloska(i+1) && samogloska(i+2)) || (!samogloska(i) && !samogloska(i+1) && !samogloska(i+2)); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> s; vector<int> pozycje = {-1}; int i=0; while (i < s.size()) { int j = i; while (j < s.size()-2 && !check(j)) j++; while (i <= j) { nast[i] = j; i++; } } ll bad = s.size()*(s.size() + 1LL) / 2LL; for (int i=0; i<s.size()-1; i++) bad -= (nast[i] - i + 2); bad--; cout << bad; return 0; } |