이진 문자열에서 연속한 한 블록(빈 블록도 가능)을 1 하나로 바꾸거나 삽입해 결과 문자열이 사전순으로 가장 크도록 하는 위치와 길이를 찾는다.
보통7그리디문자열완전 탐색구현아직 제출이 없습니다시간 제한5초메모리 제한1024 MB
사진은 문제와 아무 상관이 없다. 아무튼 귀여운 수호랑이다.
꽁꽁 얼어붙은 오리연못에서 겨울 컬링 대회의 여자 결승전이 열리고 있다. 한국 팀은 즈웨펜(Jwepan) 팀과 마지막 한 점을 두고 맞붙는 중이다.
오리연못 위에는 컬링 스톤 N개가 과녁에서 가까운 순서대로 일렬로 놓여 있다. 가장 왼쪽 돌이 과녁에서 가장 가깝고, 가장 오른쪽 돌이 과녁에서 가장 멀다. 각 돌은 한국 팀의 돌(1)이거나 즈웨펜 팀의 돌(0)이므로, 돌의 배치는 길이 N의 이진 문자열 s로 나타낸다.
한국 팀은 오랜 연습 끝에 기술 하나를 익혔다. 샤우팅을 몇 번 해 주면 영미가 연속해서 놓인 돌을 전부 쳐내고 그 자리에 자기 팀의 돌 하나를 놓는다. 즉, 한국 팀은 문자열의 구간 하나를 골라 그 구간을 문자 하나 1로 바꿀 수 있다. 구간은 문자열 전체여도 되고 비어 있어도 된다. 구간이 비어 있으면 그 자리에 1 하나가 새로 끼어들어 문자열의 길이가 1 늘어난다.
한국 팀은 이 연산을 정확히 한 번 해서 문자열을 사전 순 최대로 만들려고 한다. 어느 구간을 골라야 하는지 구하자.
길이 n인 문자열 s=s1s2…sn이 길이 m인 문자열 t=t1t2…tm보다 사전 순으로 크다는 것은 다음 둘 중 하나가 성립한다는 뜻이다.
첫째 줄에 돌의 개수 N이 주어진다.
둘째 줄에 0과 1로만 이루어진 길이 N의 문자열이 주어진다. 과녁에서 가까운 돌부터 먼 돌까지 차례대로 각 돌이 어느 팀의 것인지를 나타낸다. 문자 사이에 공백이나 따옴표는 없다.
두 정수 S와 L을 공백으로 구분해 출력한다. 영미가 S번째 문자 바로 뒤의 돌 L개를 쳐내고 그 자리에 자기 팀의 돌 하나를 놓았다는 뜻이다. (0≤S, L≤N)
사전 순 최대인 문자열을 만드는 (S,L)이 여럿이면 S가 가장 작은 것을 출력하고, 그런 (S,L)이 또 여럿이면 그중 L이 가장 작은 것을 출력한다.