다리
시간 제한1초메모리 제한256 MB
각 쪽에 n명의 노인이 있고 휴식 시간 x, 다리 건너기 시간 t가 주어질 때, 2n명의 노인을 모두 도와 건너고 돌아오는 데 걸리는 최소 시간을 구합니다.
문제
날씨가 맑고 경치가 좋은 날, 당신은 산책하러 공원에 왔다. 다리 근처에 나이 든 남자들이 많이 모여 있어서 무슨 일인지 알고 싶어진다.
다리의 양쪽에는 정확히 명씩의 노인이 있다. 이들은 모두 다리를 건너 반대편에서 잠시 쉰 뒤, 다시 다리를 건너 원래 자리로 돌아가려 한다. 하지만 너무 고령이라 혼자서는 다리를 건널 수 없다.
당신은 마음속의 선한 뜻에 따라 이 명의 노인을 돕고 싶다. 처음에 당신은 다리의 한쪽에 있다. 당신이 다리를 건너는 데 분이 걸리고, 노인이 쉬는 데 분이 걸린다. 다리를 건널 때 노인 한 명을 도울 수 있으며, 이때 추가 시간은 들지 않는다.
시간 관리의 달인인 당신은 명의 노인을 모두 돕는 데 필요한 최소 시간을 알고 싶다. 이 최소 시간을 계산하는 프로그램을 작성하라.
입력
첫 줄에는 테스트 케이스의 개수를 나타내는 정수 가 주어진다.
이어지는 개의 줄에는 문제 설명과 같은 의미의 정수 , , 가 각각 주어진다.
출력
정확히 개의 줄을 출력한다. 각 줄에는 해당 테스트 케이스에서 필요한 최소 시간을 나타내는 정수 하나를 출력한다.
힌트
샘플 데이터의 첫 번째 경우에 대한 최적 계획은 아래와 같다. 숫자는 노인을, |는 다리를, x는 당신을 나타낸다.
Time
0 x 1 2 | 3 4
2 2 | 3 4 1 x
4 x 3 2 | 4 1
6 3 | 4 1 2 x
8 x 4 3 | 1 2 x
10 4 | 1 2 3 x
12 x 1 4 | 2 3
14 1 | 2 3 4 x
16 x 2 1 | 3 4