128522025-01-02 14:25:09BucsMateSzínezéscpp17Elfogadva 50/50404ms1784 KiB
#include <iostream>

using namespace std;

char golyok[200001];

void csere(char golyok[], int poz)
{
    if(golyok[poz] == '1'){
        golyok[poz] = '0';
    }
    else{
        golyok[poz] = '1';
    }
}

int main()
{
    int N, Q;
    cin >> N >> Q;
    cin >> golyok;

    int nullaLepesek = 0, egyLepesek = 0;
    if(golyok[0] == '0'){
        nullaLepesek++;
    }
    else{
        egyLepesek++;
    }
    for(int i = 1; i < N; i++){
        if(golyok[i] != golyok[i-1]){
            if(golyok[i] == '0'){
                nullaLepesek++;
            }
            else{
                egyLepesek++;
            }
        }
    }
    int lepesekSzama = min(nullaLepesek, egyLepesek);

    cout << lepesekSzama << endl;
    for(int i = 0; i < Q; i++){
        int poz;
        cin >> poz;
        poz--;

        if(poz == 0){
            if(golyok[0] == golyok[1]){
                if(golyok[0] == '1'){
                    nullaLepesek++;
                }
                else{
                    egyLepesek++;
                }
                csere(golyok, poz);
            }
            else{
                if(golyok[0] == '1'){
                    egyLepesek--;
                }
                else{
                    nullaLepesek--;
                }
                csere(golyok, poz);
            }
        }
        else if(poz == N-1){
            if(golyok[N-1] == golyok[N-2]){
                if(golyok[N-1] == '1'){
                    nullaLepesek++;
                }
                else{
                    egyLepesek++;
                }
                csere(golyok, poz);
            }
            else{
                if(golyok[N-1] == '1'){
                    egyLepesek--;
                }
                else{
                    nullaLepesek--;
                }
                csere(golyok, poz);
            }
        }
        else{
            if(golyok[poz-1] != golyok[poz+1]){
                csere(golyok, poz);
            }
            else if(golyok[poz-1] == golyok[poz]){
                nullaLepesek++;
                egyLepesek++;
                csere(golyok, poz);
            }
            else{
                nullaLepesek--;
                egyLepesek--;
                csere(golyok, poz);
            }
        }
        lepesekSzama = min(nullaLepesek, egyLepesek);
        cout << lepesekSzama << endl;
    }


    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms320 KiB
2Elfogadva0/03ms320 KiB
3Elfogadva2/21ms508 KiB
4Elfogadva2/21ms320 KiB
5Elfogadva3/31ms320 KiB
6Elfogadva3/31ms320 KiB
7Elfogadva3/33ms320 KiB
8Elfogadva3/33ms320 KiB
9Elfogadva2/22ms320 KiB
10Elfogadva2/22ms320 KiB
11Elfogadva3/3404ms1680 KiB
12Elfogadva3/3391ms1704 KiB
13Elfogadva3/3391ms1636 KiB
14Elfogadva3/3400ms1688 KiB
15Elfogadva3/3391ms1592 KiB
16Elfogadva3/3391ms1784 KiB
17Elfogadva3/3400ms1700 KiB
18Elfogadva3/3400ms1636 KiB
19Elfogadva3/3384ms1592 KiB
20Elfogadva3/3400ms1592 KiB