아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

네트워크 배치

시간 제한3초메모리 제한256 MB

요약
원형 탁자에 놓인 n대의 컴퓨터를 용량 제한이 있는 m개의 스위치에 연결하되, 원형 거리로 정의된 케이블 길이의 합이 최소가 되도록 배정한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 구간, 구현
정답자
아직 제출이 없습니다

문제

프로그래밍 올림피아드를 개최할 때는 주최자가 해결해야 할 문제가 많다. 그중 하나는 본선 경기에서 참가자들이 컴퓨터에 앉을 자리를 배치하는 것이다. 이번에는 본선에 n명의 참가자를 초대했고, 이들을 둥근 탁자에 앉히기로 했다. 편의를 위해 탁자를 n + m개의 똑같은 구역으로 나누었다. 각 구역에는 참가자가 앉을 컴퓨터가 하나 있거나 네트워크 스위치가 하나 있다. 참가자들의 컴퓨터는 스위치에 연결되어야 하며, 각 컴퓨터는 정확히 하나의 스위치에 연결되어야 한다. 각 스위치에 대해 연결할 수 있는 컴퓨터의 수를 알고 있다.

물론 주최자들은 컴퓨터를 연결하는 데 케이블을 최대한 적게 쓰고 싶어 한다. 구역 i와 j(1 ≤ i < j ≤ n + m)에 있는 장치를 연결하는 데 min(j − i, n + m + i - j)미터의 케이블이 필요하다고 하자.

주최자들은 탁자의 m개 구역에 스위치를 설치하고 나머지 n개 구역에 컴퓨터를 배치했다. 이제 케이블을 최대한 적게 쓰도록 컴퓨터를 스위치에 연결해야 한다. 컴퓨터를 연결하는 데 쓸 수 있는 케이블 총 길이의 최솟값을 구하도록 도와주자.

입력

첫째 줄에 테스트 세트의 수 T(1 ≤ T ≤ 100)가 주어진다. 이어서 테스트 세트의 설명이 주어진다.

각 테스트 세트는 다음과 같이 설명된다. 첫째 줄에 두 정수 n과 m(1 ≤ n, m ≤ 300)이 주어진다. 이는 각각 컴퓨터와 스위치의 수이다. 다음 줄에 n + m개의 정수 a1, a2, ..., a**n+m(0 ≤ ai ≤ 300)이 주어지며, 탁자 구역의 설명이다. 어떤 수가 0이면 그 구역에 컴퓨터가 있다. 그렇지 않으면 그 구역에 스위치가 있고, 최대 ai대의 컴퓨터를 연결할 수 있다. 모든 테스트에서 컴퓨터의 총 개수는 300을 넘지 않는다. 마찬가지로 스위치의 총 개수도 300을 넘지 않는다. 모든 테스트에서 모든 컴퓨터를 스위치에 연결할 수 있는 방법이 존재한다.

출력

각 테스트에 대해 한 줄에 하나의 수를 출력한다. 이는 컴퓨터를 스위치에 연결하는 데 필요한 케이블의 총 길이이다.

예제1

  1. 예제 1

    입력
    1
    5 2
    3 0 0 4 0 0 0
    
    예상 출력
    6