#include <bits/stdc++.h> using namespace std; typedef long long ll; #define vc vector #define st first #define nd second #define pll pair<ll, ll> #define sz(a) (ll)a.size() #define all(a) a.begin(), a.end() #define pu push #define pub push_back #define pob pop_back #define em emplace #define emb emplace_back const ll INF = 2e18; void program() { ll n, m, t; cin >> n >> m >> t; string str; cin >> str; ll cnt = 0; for (ll i = 0; i < n; i++) cnt += str[i] <= '2'; m = max(0ll, cnt - m); ll ans = -1; vc<ll> cz(n + 1, 0), cs(n + 1, 0); for (ll i = 1; i <= n; i++) { cz[i] = cz[i - 1] + (str[i - 1] == '2'); cs[i] = cs[i - 1] + (str[i - 1] <= '2'); } for (ll i = 0; i + t < n; i++) { for (ll j = i + t + 1; j + t - 1 < n; j++) { ll a = cz[i] + cz[n] - cz[j + t]; ll b = i + n - j - t; ll c = cs[j] - cs[i + t]; ll mm = m; mm -= c; mm = max(mm, 0ll); if (mm <= a) ans = max(ans, b - mm); } } ll a = 0; for (ll i = 0; i < n; i++) if (str[i] == '2') a++; if (a >= m) ans = max(ans, n - m); cout << ans << "\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); program(); 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 55 56 57 58 59 | #include <bits/stdc++.h> using namespace std; typedef long long ll; #define vc vector #define st first #define nd second #define pll pair<ll, ll> #define sz(a) (ll)a.size() #define all(a) a.begin(), a.end() #define pu push #define pub push_back #define pob pop_back #define em emplace #define emb emplace_back const ll INF = 2e18; void program() { ll n, m, t; cin >> n >> m >> t; string str; cin >> str; ll cnt = 0; for (ll i = 0; i < n; i++) cnt += str[i] <= '2'; m = max(0ll, cnt - m); ll ans = -1; vc<ll> cz(n + 1, 0), cs(n + 1, 0); for (ll i = 1; i <= n; i++) { cz[i] = cz[i - 1] + (str[i - 1] == '2'); cs[i] = cs[i - 1] + (str[i - 1] <= '2'); } for (ll i = 0; i + t < n; i++) { for (ll j = i + t + 1; j + t - 1 < n; j++) { ll a = cz[i] + cz[n] - cz[j + t]; ll b = i + n - j - t; ll c = cs[j] - cs[i + t]; ll mm = m; mm -= c; mm = max(mm, 0ll); if (mm <= a) ans = max(ans, b - mm); } } ll a = 0; for (ll i = 0; i < n; i++) if (str[i] == '2') a++; if (a >= m) ans = max(ans, n - m); cout << ans << "\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); program(); return 0; } |