1082021-01-12 13:38:12Babják PéterSzínezéscpp11Accepted 50/50300ms17484 KiB
#include <iostream>
#include <algorithm>
#include <string>
#define ll long long
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int n,k;cin>>n>>k;
    bool t[n];//egy adott pozíció színe 
    int pk[2];pk[0]=0;pk[1]=0;//pk[0] hány 0ás egybefüggő szakasz van. pk[1] hány 1es egybefüggő szakasz van.
    string s;cin>>s;
    t[0]=(s[0]=='1');pk[t[0]]++;//színezés
    for(int i=1;i<n;i++)
    {
        t[i]=(s[i]=='1');
        if(t[i]!=t[i-1])
        {
            pk[t[i]]++;
        }
    }
    cout<<min(pk[0],pk[1])<<endl;
    n--;
    for(int i=0;i<k;i++)
    {
        int q;
        cin>>q;
        q--;
        if(q>0 && q<n)
        {
            if(t[q+1]==t[q-1])
            {
                if(t[q]==t[q-1])// .....111.... vagy ....000... azaz ha qt megváltoztatjuk kettévágunk egy szakaszt, azaz egyel több 0ás,1el több 1 es lesz.
                {
                    pk[0]++;
                    pk[1]++;
                }
                else//.....010...... vagy .....101.... q változtatásával egyesítünk 2 szakaszt,szóval mindkettőből kevesebb lesz 1el.
                {
                    pk[0]--;
                    pk[1]--;
                }
            }
        }
        else//q az első vagy az utolsó elem
        {
            if(q==0 )        //n==1?
            {
                if((t[0]!=t[1]))
                {
                    pk[t[0]]--;
                }
                else
                {
                    pk[!t[0]]++;
                }
            }
            if(q==n)
            {
                if(t[n-1]!=t[n])
                {
                    pk[t[n]]--;
                }
                else
                {
                    pk[!t[n]]++;
                }
            }
        }
        t[q]=!t[q];
        cout<<min(pk[0],pk[1])<<endl;
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms1752 KiB
2Accepted0/02ms1944 KiB
3Accepted2/21ms1860 KiB
4Accepted2/21ms1860 KiB
5Accepted3/31ms1864 KiB
6Accepted3/31ms1872 KiB
7Accepted3/32ms1880 KiB
8Accepted3/33ms1892 KiB
9Accepted2/23ms1928 KiB
10Accepted2/23ms1940 KiB
11Accepted3/3289ms4336 KiB
12Accepted3/3284ms5812 KiB
13Accepted3/3282ms7264 KiB
14Accepted3/3282ms8728 KiB
15Accepted3/3300ms10192 KiB
16Accepted3/3296ms11640 KiB
17Accepted3/3284ms13104 KiB
18Accepted3/3273ms14560 KiB
19Accepted3/3280ms16024 KiB
20Accepted3/3289ms17484 KiB