7571 2024. 01. 09 18:42:03 Ablablabla Takaros Sorozat (80 pont) cpp17 Hibás válasz 50/80 9ms 6296 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 Összpont Teszt Verdikt Idő Memória
base 50/80
1 Elfogadva 0/0 3ms 2084 KiB
2 Hibás válasz 0/0 9ms 4012 KiB
3 Elfogadva 4/4 3ms 2372 KiB
4 Elfogadva 4/4 3ms 2424 KiB
5 Részben helyes 2/4 3ms 2424 KiB
6 Részben helyes 2/4 3ms 2680 KiB
7 Részben helyes 2/4 3ms 2800 KiB
8 Elfogadva 4/4 3ms 2976 KiB
9 Részben helyes 2/4 3ms 3024 KiB
10 Részben helyes 2/4 3ms 3148 KiB
11 Részben helyes 2/4 3ms 3400 KiB
12 Részben helyes 2/4 3ms 3644 KiB
13 Elfogadva 4/4 7ms 5472 KiB
14 Részben helyes 2/4 7ms 5364 KiB
15 Elfogadva 4/4 7ms 5560 KiB
16 Részben helyes 2/4 8ms 5684 KiB
17 Részben helyes 2/4 7ms 5896 KiB
18 Részben helyes 2/4 8ms 6044 KiB
19 Részben helyes 2/4 7ms 6252 KiB
20 Részben helyes 2/4 8ms 6292 KiB
21 Részben helyes 2/4 8ms 6296 KiB
22 Részben helyes 2/4 9ms 6212 KiB