75712024-01-09 18:42:03AblablablaTakaros Sorozat (80 pont)cpp17Hibás válasz 50/809ms6296 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;

    string s;
    cin >> s;

    vector<int> pref(n + 1, 0);
    for(int i = 1; i <= n; i++){
        pref[i] = pref[i - 1] + (s[i - 1] == '0' ? 0 : 1);
    }

    vector<int> suf(n + 1, 0);
    for(int i = n - 1; i >= 0; i--){
        suf[i] = suf[i + 1] + (s[i] == '1' ? 0 : 1);
    }

    int mini = 2e9 + 7;
    for(int i = 0; i < n; i++){
        mini = min(mini, pref[i] + suf[i + 1]);
    }

    cout << mini << "\n";

    pref.assign(n + 1, 0);
    int nullas = 0;
    int egyes = 0;
    for(int i = 1; i <= n; i++){
        if(s[i - 1] == '0'){
            nullas++;
        } else{
            egyes++;
        }

        if(i >= 5){
            if(s[i - 5] == '0'){
                nullas--;
            } else{
                egyes--;
            }
        }

        int a = pref[i - 1] + (s[i - 1] == '0' ? 0 : 1);
        int b = 2e9 + 7;
        if(nullas == 2 && egyes == 2){
            b = pref[i - 3] + 1;
        }

        pref[i] = min(a, b);
    }

    suf.assign(n + 1, 0);
    nullas = 0;
    egyes = 0;
    for(int i = n - 1; i >= 0; i--){
        if(s[i] == '0'){
            nullas++;
        } else{
            egyes++;
        }

        if(i + 4 < n){
            if(s[i + 4] == '0'){
                nullas--;
            } else{
                egyes--;
            }
        }

        int a = suf[i + 1] + (s[i] == '1' ? 0 : 1);
        int b = 2e9 + 7;
        if(nullas == 2 && egyes == 2){
            b = suf[i + 3] + 1;
        }

        suf[i] = min(a, b);
    }

    mini = 2e9 + 7;
    for(int i = 0; i < n; i++){
        mini = min(mini, pref[i] + suf[i + 1]);
    }

    cout << mini << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/80
1Elfogadva0/03ms2084 KiB
2Hibás válasz0/09ms4012 KiB
3Elfogadva4/43ms2372 KiB
4Elfogadva4/43ms2424 KiB
5Részben helyes2/43ms2424 KiB
6Részben helyes2/43ms2680 KiB
7Részben helyes2/43ms2800 KiB
8Elfogadva4/43ms2976 KiB
9Részben helyes2/43ms3024 KiB
10Részben helyes2/43ms3148 KiB
11Részben helyes2/43ms3400 KiB
12Részben helyes2/43ms3644 KiB
13Elfogadva4/47ms5472 KiB
14Részben helyes2/47ms5364 KiB
15Elfogadva4/47ms5560 KiB
16Részben helyes2/48ms5684 KiB
17Részben helyes2/47ms5896 KiB
18Részben helyes2/48ms6044 KiB
19Részben helyes2/47ms6252 KiB
20Részben helyes2/48ms6292 KiB
21Részben helyes2/48ms6296 KiB
22Részben helyes2/49ms6212 KiB