108 2021. 01. 12 13:38:12 Babják Péter Színezés cpp11 Elfogadva 50/50 300ms 17484 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 1ms 1752 KiB
2 Elfogadva 0/0 2ms 1944 KiB
3 Elfogadva 2/2 1ms 1860 KiB
4 Elfogadva 2/2 1ms 1860 KiB
5 Elfogadva 3/3 1ms 1864 KiB
6 Elfogadva 3/3 1ms 1872 KiB
7 Elfogadva 3/3 2ms 1880 KiB
8 Elfogadva 3/3 3ms 1892 KiB
9 Elfogadva 2/2 3ms 1928 KiB
10 Elfogadva 2/2 3ms 1940 KiB
11 Elfogadva 3/3 289ms 4336 KiB
12 Elfogadva 3/3 284ms 5812 KiB
13 Elfogadva 3/3 282ms 7264 KiB
14 Elfogadva 3/3 282ms 8728 KiB
15 Elfogadva 3/3 300ms 10192 KiB
16 Elfogadva 3/3 296ms 11640 KiB
17 Elfogadva 3/3 284ms 13104 KiB
18 Elfogadva 3/3 273ms 14560 KiB
19 Elfogadva 3/3 280ms 16024 KiB
20 Elfogadva 3/3 289ms 17484 KiB