226432026-01-15 13:09:40AKrisztianSzínezéscpp17Hibás válasz 29/50409ms1892 KiB
#include <iostream>
#include <string>

using namespace std;

int main()
{
    long long N, Q;
    cin >> N >> Q;
    string sor;
    cin >> sor;
    long long K, p=0, k=0;
    bool pp=0, kk=0;

    for (long long j=0; j<N; j++)
    {
        if (sor[j]=='1' and kk==0)
        {
            kk=1;
            pp=0;
            k=k+1;
        }
        if (sor[j]=='0' and pp==0)
        {
            kk=0;
            pp=1;
            p=p+1;
        }
    }
    cout << min(k, p) << endl;

    for (long long i=0; i<Q; i++)
    {
        cin >> K;
        if (K<N and K>1)
        {
            if (sor[K-1]==sor[K-2] and sor[K-1]==sor[K])
            {
                if (sor[K-1]=='1')
                {
                    k=k+1;
                    p=p+1;
                }
                else
                {
                    k=k+1;
                    p=p+1;
                }
            }
            if ((sor[K-1]!=sor[K-2]) and (sor[K-1]!=sor[K]))
            {
                p=p-1;
                k=k-1;
            }
        }
        else if (K==N)
        {
            if (sor[K-1]==sor[K-2])
            {
                if (sor[K-1]=='1')
                {
                    p=p+1;
                }
                else
                {
                    k=k+1;
                }
            }
            if (sor[K-1]!=sor[K-2])
            {
                if (sor[K-1]=='1')
                {
                    k=k-1;
                }
                else
                {
                    p=p-1;
                }
            }
        }
        else if (K==1)
        {
            if (sor[K-1]==sor[K])
            {
                if (sor[K-1]=='1')
                {
                    p=p+1;
                }
                else
                {
                    k=k+1;
                }
            }
            if (sor[K-1]!=sor[K])
            {
                if (sor[K]=='1')
                {
                    k=k-1;
                }
                else
                {
                    p=p-1;
                }
            }
        }
        if (sor[K-1]=='1')
        {
            sor[K-1]='0';
        }
        else
        {
            sor[K-1]='1';
        }
        cout << min(k, p) << endl;
    }

    return 0;
}


RészfeladatÖsszpontTesztVerdiktIdőMemória
base29/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms316 KiB
3Elfogadva2/21ms512 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Hibás válasz0/33ms316 KiB
8Elfogadva3/33ms316 KiB
9Elfogadva2/23ms512 KiB
10Elfogadva2/22ms316 KiB
11Hibás válasz0/3388ms1796 KiB
12Hibás válasz0/3405ms1792 KiB
13Hibás válasz0/3409ms1892 KiB
14Elfogadva3/3409ms1764 KiB
15Elfogadva3/3395ms1776 KiB
16Hibás válasz0/3407ms1796 KiB
17Hibás válasz0/3397ms1732 KiB
18Elfogadva3/3405ms1768 KiB
19Hibás válasz0/3356ms1732 KiB
20Elfogadva3/3358ms1732 KiB