파일 업로드

사회적 거리두기 I

profile
실행 시간 제한메모리 제한
1 초512 MB
📃 해결할 문제

끔찍한 새로운 질병, COVID-19가 전세계 사람들 사이에서에서 확산되기 시작하면서 질병관리본부의 이지훈 본부장은 가능한 모든 예방 조치를 취하려고 노력하고 있습니다.

이지훈 본부장이 관리하는 감염병 예방 구역은 길고 좁은 공간으로 일렬로 늘어선  NN (2N1052 \leq N \leq 10^5)개의 구역이 있습니다. 이 중 일부 구역에는 현재 사람들이 있고, 일부는 비어있습니다. '사회적 거리 두기'의 중요성을 인식한 이지훈 본부장은 DD를 최대화하려 합니다. 여기서 DD는 가장 가까이 있는 두 사람이 차지하고 있는 구역 사이의 거리입니다. 예를 들어, 3번과 8번 구역에 사람이 있다면 D=5D = 5입니다.

최근에 두 명의 새로운 사람이 이 감염병 예방 구역에 들어오게 되었고, 이지훈 본부장은 이들을 어느 비어 있는 구역에 배정할지 결정해야 ㅎ바니다. 새로운 두 명의 사람을 배정하여 결과적으로 DD의 값이 여전히 최대한 크게 유지되도록 해주세요. 이지훈 본부장은 기존의 사람들을 움직일 수 없으며, 새로운 사람들을 구역에 배정하는 것만 원합니다.

💻 입력

입력의 첫째 줄에는 NN이 주어집니다.

다음 줄에는 감염병 예약 구역의 자리 배치를 설명하는 NN의 길이의 0과 1로 이루어진 문자열이 들어옵니다. 0은 빈 자리를 나타내고 1은 사람이 차지하고 있는 자리를 나타냅니다. 문자열에는 최소 두 개의 0이 있으므로, 적어도 두 명의 사람을 추가할 수 있는 충분한 공간이 있습니다.

🖨️ 출력

두 명의 새로운 사람을 최적의 방식으로 추가했을 때, 가능한 최대한의 거리 DD를 출력하십시오. (DD는 가장 가까이 있는 두 사람이 차지하고 있는 구역 사이의 거리입니다.)


💻 예제 입력 1
14
10001001000010
🖨️ 예제 출력 1
2

💡 힌트

이 예시에서, 새로운 사람들을 추가하여 점유 문자열을 10x010010x0010과 같이 만들 수 있습니다. 

여기서 x는 새로운 사람들을 나타냅니다. 이 경우 D=2D = 2입니다. 새로운 사람들을 추가하여 DD의 값을 더 높게 만들 수 있는 방법은 없습니다.


출처: USACO 2020 US Open Contest, Bronze Problem 1. Social Distancing I