만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

지루함 줄이기

시간 제한1초메모리 제한1024 MB

요약
0과 1이 각각 N개씩 담긴 길이 2N의 문자열에서, 모든 구간의 0과 1 개수 차이를 K 이하로 만드는 데 필요한 인접 교환 횟수의 최솟값을 구합니다.
난이도

보통10점 중 7점

유형
누적 합, 그리디, 문자열
정답자
아직 제출이 없습니다

문제

Moloco는 전 세계 여러 회사가 온라인 광고를 더 효과적으로 운영하도록 돕는 광고 기술 회사입니다. Moloco의 기술을 사용하면 인터넷 사용자는 더 관련성 높은 광고를 보고, 광고주는 광고를 효과적으로 낼 수 있습니다.

종서는 유저가 한 홈페이지를 총 2N2N번 방문할 것이라고 예측했습니다. 종서는 유저에게 0번 광고와 1번 광고를 각각 NN번씩 보여주려고 합니다. 같은 종류의 광고가 계속 나오면 사람들이 광고에 익숙해져 광고 효과가 떨어지므로, 종서는 두 광고를 잘 배치해 효과를 극대화하려고 합니다.

광고 효과를 수치로 파악하기 위해 Moloco의 엔지니어 종서는 "지루함"이라는 지표를 정의했습니다. i≤ji\leq j에 대해, ii번째부터 jj번째까지 광고로 이루어진 구간의 지루함은 구간 안에 있는 0번 광고 개수와 1번 광고 개수의 차이입니다. 유저가 최종적으로 느끼는 지루함은 모든 구간의 지루함 중 최댓값입니다.

예를 들어 광고를 00110110 순서로 배치하면, 3번째 광고부터 7번째 광고까지 구간의 지루함은 ∣1−4∣=3|1-4|=3입니다. 이 구간의 지루함이 가장 크므로, 유저가 최종적으로 느끼는 지루함도 3입니다.

종서는 "지루함" 지표가 얼마나 잘 작동하는지 알아보려고 지루함을 줄이려 합니다. 다만 광고 순서는 이미 정해져 있어, 지루함을 줄이려면 연달아 나오는 두 광고를 맞바꾸는 데 1만큼의 비용을 써야 합니다. 맞바꾸는 작업은 원하는 만큼 할 수 있습니다.

유저가 최종적으로 느끼는 지루함을 KK 이하로 만드는 데 필요한 최소 비용은 얼마일까요?

입력

첫 줄에 NN과 KK가 공백을 사이에 두고 주어집니다. (1≤K≤N≤500 0001\le K\le N\le 500\,000)

둘째 줄에는 초기 광고 배치를 나타내는, NN개의 0과 NN개의 1로만 이루어진 길이 2N2N의 문자열이 주어집니다.

출력

지루함을 KK 이하로 만드는 데 필요한 최소 비용을 출력합니다.

주어진 광고 순서의 지루함이 이미 KK 이하이면 0을 출력합니다.

어떤 입력에 대해서도 지루함을 11로 만들 수 있음을 보일 수 있습니다. 즉, 답은 항상 존재합니다.

예제3

  1. 예제 1

    입력
    4 2
    00110110
    
    예상 출력
    1
    
  2. 예제 2

    입력
    4 2
    11110000
    
    예상 출력
    3
    
  3. 예제 3

    입력
    4 1
    10011001
    
    예상 출력
    2