func_code_string: #include <bits/stdc++.h>   using namespace std;   long long r, m, n, x, y, a[5000005], b[5000005];   long long fb(long long i, long long j, long long p) {     if (p < b[i]) return i - 1;     if (p >= b[j]) return j;     long long mid = (i + j) / 2;     if (b[mid] >= p && b[mid + 1] < p) return mid;     if (b[mid] > p)       return fb(i, mid, p);     else       return fb(mid + 1, j, p);   }   long long fb2(long long i, long long j, long long p) {     if (p < a[i]) return i - 1;     if (p >= a[j]) return j;     long long mid = (i + j) / 2;     if (a[mid] >= p && a[mid + 1] < p) return mid;     if (a[mid] > p)       return fb2(i, mid, p);     else       return fb2(mid + 1, j, p);   }   int main() {     ios_base::sync_with_stdio(0);     long long k = 0, t = 0, z = 1e7, l = 0, i, j;     cin >> n >> x >> y >> t;     string s;     cin >> s;     z = 0;     for (i = n - 1; i >= 0; i--) {       l = l + x;       if (s[i] ==  w ) l = l + y;       l++;       b[z++] = l;       if (l > t) break;     }     l = 0;     for (i = 0; i < n; i++) {       if (s[i] ==  w ) l = l + y;       l++;       a[i] = l;       if (l > t) break;       l = l + x;     }     sort(a, a + i);     sort(b, b + z);     long long sa = i;     l = 0;     r = 0;     i = 0;     for (i = 0; i < sa; i++) {       l = a[i];       if (l > t) break;       m = t - l - i * x;       if (m > 0) {         j = fb(0, z - 1, m) + 1;         r = max(r, i + j + 1);       } else         r = max(r, i + 1);     }     for (i = 0; i < z; i++) b[i] += a[0];     for (i = 1; i < sa; i++) a[i] = a[i] - a[0] - x;     for (i = 0; i < z; i++) {       l = b[i];       if (l > t) break;       m = t - l - (i + 2) * x;       if (m > 0) {         j = fb2(1, sa - 1, m);         r = max(r, i + j + 2);       } else         r = max(r, i + 2);     }     r = min(r, n);     cout << r;     ;     return 0;   }   