7145 2023. 12. 31 14:08:47 xxx Takaros Sorozat (80 pont) cpp17 Elfogadva 80/80 8ms 9956 KiB
#include <bits/stdc++.h>
using namespace std;

void solve() {
    int n;
    cin >> n;
    string s;
    cin >> s;
    vector<int> a(n+5);
    for(int i = 1; i <= n; i++) {
        a[i] = s[i-1]-'0';
    }

    vector<int> frt(n+1), bw(n+2), pref(n+5), preb(n+5);

    for(int i = 1; i <= n; i++) {
        frt[i] = frt[i-1] + a[i];

        if (a[i]) pref[i] = i;
        else pref[i] = pref[i-1];

    }

    for(int i = n; i > 0; i--) {
        bw[i] = bw[i+1] + !a[i];

        if (!a[i]) preb[i] = i;
        else preb[i] = preb[i+1];

    }

    int ans1 = INT_MAX;


    for(int i = 0; i <= n; i++) {
        ans1 = min(ans1, frt[i] + bw[i+1]);
    }

    cout << ans1 << endl;

    bool T = false;
    vector<int> dpf(n+2), dpb(n+2);
    //  if (a[1]) dpf[1] = 1;
    for(int i = 1; i <= n; i++) {
        dpf[i] = dpf[i-1];
        if (a[i] && pref[i-1]) {
            if (abs(pref[i-1] - i) <= 3) {
                dpf[i] = dpf[pref[i-1]-1] + 1;
            } else {
                dpf[i] = dpf[pref[i-1]] + 1;
            }
        } else if (a[i]) dpf[i] = 1;
    }


    for(int i = n; i > 0; i--) {
		dpb[i] = dpb[i+1];
		if(!a[i] && preb[i+1]) {
            if(abs(preb[i+1]-i) <= 3) {
                dpb[i] = dpb[preb[i+1]+1] + 1;
            } else {
                dpb[i] = dpb[preb[i+1]] + 1;
            }
        } else if (!a[i]) dpb[i] = 1;
    }

    int ans2 = INT_MAX;

    for(int i = 0; i <= n; i++) {
        ans2 = min(ans2, dpf[i] + dpb[i+1]);
    }

    cout << ans2 << '\n';




}

int main() {
	ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int tt=1;
	//cin >> tt;
	while(tt--) {
        solve();
	}


	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 80/80
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 8ms 7808 KiB
3 Elfogadva 4/4 3ms 2232 KiB
4 Elfogadva 4/4 3ms 2340 KiB
5 Elfogadva 4/4 3ms 2540 KiB
6 Elfogadva 4/4 3ms 2756 KiB
7 Elfogadva 4/4 3ms 2844 KiB
8 Elfogadva 4/4 3ms 2964 KiB
9 Elfogadva 4/4 3ms 3052 KiB
10 Elfogadva 4/4 3ms 3276 KiB
11 Elfogadva 4/4 3ms 3276 KiB
12 Elfogadva 4/4 3ms 3640 KiB
13 Elfogadva 4/4 6ms 8964 KiB
14 Elfogadva 4/4 6ms 8964 KiB
15 Elfogadva 4/4 6ms 9372 KiB
16 Elfogadva 4/4 6ms 9328 KiB
17 Elfogadva 4/4 6ms 9396 KiB
18 Elfogadva 4/4 6ms 9524 KiB
19 Elfogadva 4/4 6ms 9660 KiB
20 Elfogadva 4/4 8ms 9852 KiB
21 Elfogadva 4/4 8ms 9876 KiB
22 Elfogadva 4/4 8ms 9956 KiB