균형 잡힌 텍스트

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

nn개의 단어로 이루어진 텍스트가 있고, 단어에는 11번부터 nn번까지 번호가 매겨져 있다. 이 텍스트를 kk개의 줄로 나누는 분할은 수열 (a1,a2,,ak1)(a_1, a_2, \dots, a_{k-1})로 나타낸다. 즉, 11번부터 a1a_1번까지의 단어는 첫째 줄에, a1+1a_1 + 1번부터 a2a_2번까지의 단어는 둘째 줄에, 이런 식으로 이어지며, 마지막으로 ak1+1a_{k-1} + 1번부터 nn번까지의 단어는 마지막 kk번째 줄에 놓인다.

각 단어는 (문자 개수로 측정한) 길이를 가진다. length(x)length(x)xx번 단어의 길이라고 하자. 또한 한 줄 안에서 이웃한 두 단어는 폭이 문자 하나인 공백으로 구분된다. 어떤 줄의 길이는 그 줄에 있는 단어 길이의 합에 단어 사이 공백의 개수를 더한 값으로 정의한다. ww번째 줄의 길이를 line(w)line(w)라고 하자. 즉, ww번째 줄이 ii번부터 jj번까지의 단어를 담고 있다면 그 길이는 다음과 같다.

line(w)=length(i)+length(i+1)++length(j)+(ji)line(w) = length(i) + length(i+1) + \dots + length(j) + (j - i)

다음 값을

line(1)line(2)+line(2)line(3)++line(k1)line(k)|line(1) - line(2)| + |line(2) - line(3)| + \dots + |line(k-1) - line(k)|

이 분할의 미적 계수라고 부른다. 특히 줄이 하나뿐인 분할의 미적 계수는 00이다.

당연히 계수가 작을수록 더 균형 잡힌 분할이다. 우리는 어떤 줄의 길이도 정해진 상수 mm을 넘지 않는 분할만 고려한다. 주어진 텍스트를 임의의 줄 수로 나눈 그런 모든 분할 중에서 가장 균형 잡힌 것, 즉 미적 계수가 가장 작은 것을 찾는다.

예를 들어 길이가 각각 4,3,2,54, 3, 2, 5인 단어 44개로 이루어진 텍스트와 이를 33줄로 나눈 분할 (1,3)(1, 3)을 생각해 보자. 첫째 줄은 단어 11번(길이 44), 둘째 줄은 단어 22번과 33번(3+2+1=63 + 2 + 1 = 6), 셋째 줄은 단어 44번(길이 55)을 담는다.

XXXX
XXX XX
XXXXX

이 분할의 미적 계수는 46+65=3|4 - 6| + |6 - 5| = 3이며, 이는 m=6m = 6일 때와 m=7m = 7일 때의 최소 미적 계수와 정확히 일치한다.

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 mmnn, 그리고 각 단어의 길이를 읽는다.
  • 모든 줄의 길이가 mm을 넘지 않는 분할들에 대한 최소 미적 계수를 구한다.
  • 그 결과를 표준 출력에 쓴다.

입력

첫째 줄에 두 정수 mmnn이 공백 하나로 구분되어 주어진다 (1m1,000,0001 \le m \le 1{,}000{,}000, 1n2,0001 \le n \le 2{,}000). 둘째 줄이자 마지막 줄에는 각 단어의 길이를 나타내는 nn개의 정수가 공백 하나로 구분되어 주어진다. 모든 i=1,2,,ni = 1, 2, \dots, n에 대해 1length(i)m1 \le length(i) \le m이다.

출력

첫째 줄이자 유일한 줄에, 모든 줄의 길이가 mm을 넘지 않는 분할의 최소 미적 계수를 정수 하나로 출력한다.