커패시터는 높은 공차로 제조되는 것으로 유명합니다. 많은 경우에 허용되지만 허용 오차가 적은 용량이 필요한 경우도 있습니다. 필요한 정확한 값으로 용량을 얻는 일반적인 전략은 신중하게 측정 된 커패시터 2 개를 병렬로 사용하여 용량이 필요한 범위 내에서 추가되도록하는 것입니다.
이 과제의 목표는 (복수) 용량 세트가 주어지면 각 쌍의 총 용량이 주어진 범위에 있도록 커패시터를 쌍으로 묶는 것입니다. 또한 최상의 페어링 세트, 즉 가능한 많은 쌍을 찾을 수있는 페어링 세트를 찾아야합니다.
제약
- 입력은 선택한 형식으로 구성
- 보유한 (다중) 커패시터 세트를 나타내는 정렬되지 않은 용량 목록
- 대상 범위 의 하한 및 상한을 나타내는 한 쌍의 용량 (포함)
- 입력의 모든 용량은 2 30 보다 작은 양의 정수 이며, 단위는 pF입니다 (중요하지 않음).
- 입력의 용량 목록 외에도 보유한 커패시터 세트 에는 값이 0pF 인 무한량의 커패시터가 포함되어 있습니다.
- 출력은 각 쌍의 합이 지정된 목표 범위 에 있도록 용량 쌍 목록을 선택한 형식으로 구성 합니다. 쌍의 순서 또는 쌍의 용량 순서가 지정되지 않았습니다.
- 보유한 커패시터 세트에 표시되는 것보다 출력에 용량이 더 자주 나타나지 않을 수 있습니다 . 즉, 출력하는 쌍이 겹치지 않아야합니다.
- 프로그램이 생성하는 출력보다 더 많은 용량 쌍을 포함하는 조건 4와 5를 만족하는 가능한 출력이 없어야합니다.
- 프로그램은 O ( n !) 시간 안에 종료해야합니다 . 여기서 n 은 보유한 커패시터 세트를 나타내는 목록의 길이입니다.
- 허점은 남용되지 않아야한다
- 대상 범위는 비어을지지 않습니다
채점
점수는 솔루션의 길이 (옥텟)입니다. 솔루션이 일부 k에 대해 다항식 시간 O ( n k ) 으로이 문제를 해결하면 점수를 10으로 나눕니다. 이것이 실제로 가능한지 모르겠습니다.
샘플 입력
범위 100 ~ 100, 입력 배열
100 100 100
, 유효한 출력 :0 100 0 100 0 100
범위 100 ~ 120, 입력 배열
20 80 100
, 유효한 출력 :0 100 20 80
출력
20 100
이 유효하지 않다범위 90 ~ 100, 입력 배열
50 20 40 90 80 30 60 70 40
, 유효한 출력 :0 90 20 80 30 70 40 60 40 50
범위 90 ~ 90, 입력 배열
20 30 40 40 50 60 70 80 90
, 유효한 출력 :0 90 20 70 30 60 40 50
범위 90 ~ 110, 입력 배열
40 60 50
, 유효한 출력 :40 60
a <= b <= c <= d
그러한를 a + d, a + c, b + d
범위에있는 모든하지만 b + c
아니지만, 그 모순을 제공합니다.