L개의 감방을 최대 G개의 연속한 구간으로 나눌 때, 각 감방의 탈출력과 소속 구간 길이의 곱을 모두 더한 값을 최소로 만든다.
어려움8동적 계획법분할 정복누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB칸 L개가 일렬로 놓인 감옥이 있다. 칸에는 1번부터 L번까지 번호가 붙어 있고, i번 칸에는 죄수가 한 명씩 들어 있다. i번 칸에 있는 죄수의 탈옥력은 Ci이며, 탈옥력은 죄수가 탈옥하는 능력을 수치로 나타낸 값이다.
가장 이상적인 감시 방법은 칸마다 간수를 한 명씩 두어서 간수 한 명이 죄수 한 명만 감시하는 것이다. 하지만 예산 때문에 이 감옥은 간수를 최대 G명까지만 고용할 수 있다. 탈옥 위험도가 가장 작아지도록 간수를 고용해서 배치하려고 한다.
간수 한 명은 번호가 연속한 칸만 감시하고, 모든 칸은 정확히 한 명의 간수가 감시한다. i번 칸의 탈옥 위험도 Ri는 탈옥력 Ci에 i번 칸을 맡은 간수가 감시하는 죄수 수를 곱한 값이다. 감옥의 탈옥 위험도는 모든 칸의 Ri를 더한 값이다.
L과 G, 각 칸에 있는 죄수의 탈옥력 Ci가 주어질 때 탈옥 위험도의 최솟값을 구하는 프로그램을 작성하시오.
첫째 줄에 감옥의 크기 L과 간수의 수 G가 공백으로 구분되어 주어진다. (1≤L≤8000, 1≤G≤800)
둘째 줄에 C1,C2,…,CL이 공백으로 구분되어 주어진다. (1≤Ci≤109)
첫째 줄에 탈옥 위험도의 최솟값을 출력한다.
첫 번째 예제에서 한 간수가 1, 2, 3번 칸을, 다른 간수가 4, 5번 칸을, 남은 간수가 6번 칸을 감시하면 탈옥 위험도가 최소가 된다.
1, 2, 3번 칸을 맡은 간수는 죄수 세 명을 감시하므로 세 칸의 탈옥 위험도는 각각 11×3=33이다.
4, 5번 칸을 맡은 간수는 죄수 두 명을 감시하므로 4번 칸은 24×2=48, 5번 칸은 26×2=52이다.
6번 칸을 맡은 간수는 죄수 한 명만 감시하므로 6번 칸은 100×1=100이다. 모두 더하면 33×3+48+52+100=299이다.