꽃바구니

시간 제한2초메모리 제한1024 MB

요약
꽃은 많아야 한 바구니에 들어가고 각 바구니는 꽃 크기 합과 가치 합의 한도를 지켜야 하며, 고른 꽃들 사이 궁합 점수 합의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 비트 연산, 조합론, 완전 탐색
정답자
아직 제출이 없습니다

문제

NN개의 꽃과 MM개의 바구니로 꽃바구니를 만들려 한다. 꽃바구니는 하나의 바구니와 하나 이상의 꽃으로 만들어진다. 꽃꽂이는 심오해서 꽃의 궁합을 잘 생각해야 한다. 궁합은 꽃 ii와 꽃 jj에 대해 정수 C_ijC\_{ij}로 정의된다. 꽃바구니의 아름다움은 꽃바구니에 포함된 꽃 간 궁합의 합이다. 다시 말해, 어떤 꽃바구니 SS의 아름다움은 다음과 같다.

\sum\_\limits{i,j \in S;\ i \le j} C\_{ij}

예를 들어 꽃 1,21, 2로 꽃바구니를 만든다면 그 아름다움은 C_11+C_12+C_22C\_{11}+C\_{12}+C\_{22}이다.

다음 규칙을 지키면서 꽃바구니의 아름다움의 합을 최대화해 보자.

  • 각 꽃은 하나의 바구니에만 포함되거나 어떤 바구니에도 포함되지 않는다.
  • 각 꽃바구니에 포함된 꽃의 크기 A_iA\_i의 합이 바구니의 크기 B_jB\_j를 넘을 수 없다.
  • 각 꽃바구니에 포함된 꽃의 가치 V_iV\_i의 합이 판매할 가치 KK를 넘으면 안 된다. 즉, 손해 보며 팔 수는 없다.

입력

첫 번째 줄에 꽃의 개수 NN, 바구니의 개수 MM, 판매할 가치 KK가 공백으로 구분되어 주어진다. (1≤N≤15;1≤M≤200;1≤K≤107)(1 \le N \le 15; 1 \le M \le 200; 1 \le K \le 10^7)

두 번째 줄에 꽃의 크기를 나타내는 정수 A_1,A_2,…,A_NA\_1,A\_2,\dots,A\_N이 공백으로 구분되어 주어진다. (1≤A_i≤107)(1 \le A\_i \le 10^7)

세 번째 줄에 바구니의 크기를 나타내는 정수 B_1,B_2,…,B_MB\_1,B\_2,\dots,B\_M이 공백으로 구분되어 주어진다. (1≤B_i≤107)(1 \le B\_i \le 10^7)

네 번째 줄에 꽃의 가치를 나타내는 정수 V_1,V_2,…,V_NV\_1,V\_2,\dots,V\_N이 공백으로 구분되어 주어진다. (1≤V_i≤107)(1 \le V\_i \le 10^7)

다섯 번째 줄부터 NN개의 줄에 걸쳐 각 줄마다 NN개의 정수가 공백으로 구분되어 주어진다. 그중 ii번째 줄의 jj번째 수는 꽃 ii와 jj의 궁합 C_ijC\_{ij}이다. (∣C_ij∣≤107;C_ij=C_ji)(|C\_{ij}| \le 10^7; C\_{ij}=C\_{ji})

출력

완성한 꽃바구니의 아름다움의 최대 합을 출력한다.

예제2

  1. 예제 1

    입력
    1 1 1
    2
    9
    1
    6
    
    예상 출력
    6
    
  2. 예제 2

    입력
    5 2 10
    2 1 2 8 3
    9 2
    17 1 7 3 9
    29 -6 43 81 73
    -6 97 -4 57 79
    43 -4 39 90 -3
    81 57 90 97 66
    73 79 -3 66 29
    
    예상 출력
    290