7626 2024. 01. 10 09:27:55 Ablablabla Takaros Sorozat (80 pont) cpp17 Hibás válasz 64/80 12ms 9892 KiB
#include <bits/stdc++.h>

using namespace std;

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

    string s;
    cin >> s;

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

    vector<int> pref1(n + 1, 0);
    vector<int> suf1(n + 1, 0);
    for(int i = 1; i <= n; i++){
        pref1[i] = pref1[i - 1] + szamok[i];
    }

    for(int i = n - 1; i >= 0; i--){
        suf1[i] = suf1[i + 1] + (szamok[i + 1] == 0);
    }

    int mini = 2e9 + 7;
    for(int i = 0; i < n; i++){
        mini = min(mini, pref1[i] + suf1[i]);
    }
    cout << mini << "\n";

    vector<int> elotte(n + 1, 0);
    vector<int> utana(n + 2, 0);
    for(int i = 1; i <= n; i++){
        if(szamok[i]){
            elotte[i] = i;
        } else{
            elotte[i] = elotte[i - 1];
        }
    }

    for(int i = n; i >= 1; i--){
        if(!szamok[i]){
            utana[i] = i;
        } else{
            utana[i] = utana[i + 1];
        }
    }

    vector<int> dpe(n + 2, 0);
    vector<int> dpu(n + 2, 0);
    for(int i = 1; i <= n; i++){
        dpe[i] = dpe[i - 1];
        if(szamok[i] && elotte[i - 1]){
            if(abs(elotte[i - 1] - i) <= 3){
                dpe[i] = dpe[elotte[i - 1] - 1] + 1;
            } else{
                dpe[i] = dpe[elotte[i - 1]] + 1;
            }
        } else if(szamok[i]){
            dpe[i] = 1;
        }
    }

    for(int i = n; i >= 1; i--){
        dpu[i] = dpu[i + 1];
        if(!szamok[i] && utana[i + 1]){
            if(abs(utana[i + 1] - i) <= 3){
                dpu[i] = dpu[utana[i + 1] + 1] + 1;
            } else{
                dpu[i] = dpu[utana[i + 1]] + 1;
            }
        } else if(!szamok[i]){
            dpu[i] = 1;
        }
    }

    for(int i = 0; i < n; i++){
        mini = min(mini, dpe[i] + dpu[i + 1]);
    }

    cout << mini << "\n";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 64/80
1 Elfogadva 0/0 3ms 1944 KiB
2 Elfogadva 0/0 12ms 7900 KiB
3 Hibás válasz 0/4 3ms 2476 KiB
4 Elfogadva 4/4 3ms 2564 KiB
5 Részben helyes 2/4 3ms 2776 KiB
6 Elfogadva 4/4 3ms 2896 KiB
7 Elfogadva 4/4 3ms 3148 KiB
8 Elfogadva 4/4 3ms 3136 KiB
9 Elfogadva 4/4 3ms 3248 KiB
10 Hibás válasz 0/4 2ms 3332 KiB
11 Elfogadva 4/4 3ms 3460 KiB
12 Részben helyes 2/4 2ms 3548 KiB
13 Elfogadva 4/4 8ms 9180 KiB
14 Elfogadva 4/4 8ms 9140 KiB
15 Elfogadva 4/4 8ms 9780 KiB
16 Elfogadva 4/4 8ms 9684 KiB
17 Elfogadva 4/4 8ms 9616 KiB
18 Hibás válasz 0/4 8ms 9744 KiB
19 Elfogadva 4/4 8ms 9616 KiB
20 Elfogadva 4/4 9ms 9892 KiB
21 Elfogadva 4/4 9ms 9728 KiB
22 Elfogadva 4/4 10ms 9852 KiB