이것은 전쟁이다
시간 제한2초메모리 제한512 MB
정렬된 병사들을 연속된 그룹으로 나눕니다. 각 그룹의 왼쪽 병사 a와 오른쪽 병사 b에 대해 f_a(x_b)의 합이 최대가 되는 값을 구합니다.
문제
군대가 전쟁에 나가려 한다. 지휘관은 군인들을 여러 그룹으로 나누어 전체 전투력의 합이 최대가 되게 하려 한다. 명의 군인을 x축 위의 점으로 본다. 모든 군인은 서로 다른 위치에 서 있고, 번째 군인은 에 서 있다. 군인은 1번부터 번까지 번호가 붙어 있으며, x 값 순서대로 왼쪽에서 오른쪽으로 정렬되어 주어진다.
군인들을 하나 이상의 그룹으로 나눈다. 각 군인은 정확히 한 그룹에 속하며, 모든 그룹은 연속된 구간이어야 한다. 인 구간 가 하나의 그룹이면, 이 그룹은 번째부터 번째 군인까지(양 끝 포함) 모두 포함하고, 다른 그룹의 군인이 그 사이에 끼지 않는다.
각 군인 에게는 함수 가 주어진다. 이 함수는 군인 가 자기 그룹에서 가장 왼쪽에 있을 때만 쓴다. 번째부터 번째까지 그룹의 전투력은 이다. 즉 그룹에서 가장 오른쪽 군인의 x 값을 가장 왼쪽 군인의 함수에 넣은 값이다.
정렬된 서로 다른 개의 값 과, 각 함수에 대해 값이 주어진다. 이 개 값이 아닌 에 대해서는 연속한 점 를 직선 선분으로 잇는다. 그러면 각 는 부터 까지 정의된다.
군대의 전투력은 모든 그룹 전투력의 합이다. 이 합이 최대가 되도록 그룹을 나누고 그 값을 구한다.
입력
첫 줄에 테스트 케이스 수 ()가 주어진다. 각 테스트 케이스는 다음과 같다.
첫 줄에 두 정수 과 (, , )이 주어진다. 다음 줄에 정렬된 정수 ()이 주어진다. 다음 줄에 정렬된 정수 ()이 주어진다. 다음 개 줄에는 각각 개의 정수가 주어진다. 번째 줄의 번째 정수는 이다().
이고 이 보장된다.
출력
각 테스트 케이스마다 군대의 최대 전투력을 한 줄에 출력한다. 값은 소수점 아래 정확히 6자리로 반올림한다.
힌트
다음 그림은 첫 번째 테스트 케이스를 나타낸다.

x축 위의 채워진 원 3개는 3명의 군인 위치이다. 위에서 설명한 방식으로 그린 함수 , , 가 군인마다 하나씩 있다. 최선의 방법은 처음 두 군인을 한 그룹으로 묶고, 마지막 군인은 혼자 두는 것이다. 첫 그룹의 전투력은 이며, 이다. 마지막 군인 그룹의 전투력은 이다. 따라서 전체 전투력은 6.666667이다(소수점 여섯째 자리까지 반올림한 값).