블록 셔플 정렬
블록 셔플 종류의 목록을 정렬의 (오히려 인공적인) 방법입니다. 예를 들어 다음과 같이 작동합니다.
[6, 1, 0, 3, 2, 4, -2, -1]
Break list into contiguous blocks
[6][1, 0][3, 2, 4][-2, -1]
Sort each block
[6][0, 1][2, 3, 4][-2, -1]
Sort blocks lexicographically
[-2, -1][0, 1][2, 3, 4][6]
Concatenate
[-2, -1, 0, 1, 2, 3, 4, 6]
연속적인 블록으로의 파티션은 임의로 선택할 수 있습니다. 그러나 모든 블록 선택이 마지막에 정렬 된 목록을 생성하지는 않습니다.
[6, 1, 0, 3, 2, 4, -2, -1]
[6, 1, 0][3, 2, 4][-2, -1]
[0, 1, 6][2, 3, 4][-2, -1]
[-2, -1][0, 1, 6][2, 3, 4]
[-2, -1, 0, 1, 6, 2, 3, 4]
모든 블록의 길이가 1이거나 블록이 하나만 있으면 결과가 정렬됩니다. 그러나 이것들은 다소 극단적 인 경우입니다. 이 도전에서, 당신의 임무는 블록의 수와 블록의 최대 길이 사이의 균형을 찾는 것입니다.
작업
귀하의 입력은 임의의 합리적인 형식으로 취한 정수가 아닌 정수 L의 목록입니다 . 출력에서 작은 정수이어야한다 N 되도록 L이 블록 셔플 블록의 수와 각각의 블록의 길이가 최대로되도록 정렬 할 수 N을 .
각 언어에서 가장 낮은 바이트 수가 이깁니다. 표준 코드 골프 규칙이 적용됩니다.
테스트 사례
[5] -> 1
[1,2] -> 2
[0,2,1,-1] -> 3
[-1,0,2,1] -> 2
[9,3,8,2,7] -> 4
[9,2,8,3,7] -> 3
[5,9,3,7,2,4,8] -> 7
[-1,-2,1,2,-1,-2,7] -> 4
[6,1,0,3,2,4,-2,-1] -> 4
[12,5,6,-6,-1,0,2,3] -> 3
[1,0,1,0,1,0,1,0,1,0] -> 6
[1,2,1,3,1,2,3,2,4,3] -> 5
[7,7,7,7,8,9,7,7,7,7] -> 4