네트워크 배치
시간 제한3초메모리 제한256 MB
원형 탁자에 놓인 n대의 컴퓨터를 용량 제한이 있는 m개의 스위치에 연결하되, 원형 거리로 정의된 케이블 길이의 합이 최소가 되도록 배정한다.
문제
프로그래밍 올림피아드를 개최할 때는 주최자가 해결해야 할 문제가 많다. 그중 하나는 본선 경기에서 참가자들이 컴퓨터에 앉을 자리를 배치하는 것이다. 이번에는 본선에 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을 넘지 않는다. 모든 테스트에서 모든 컴퓨터를 스위치에 연결할 수 있는 방법이 존재한다.
출력
각 테스트에 대해 한 줄에 하나의 수를 출력한다. 이는 컴퓨터를 스위치에 연결하는 데 필요한 케이블의 총 길이이다.