만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

In the cube

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

요약
격자에 있는 n개 주문대를 피해 k개의 테이블을 배치합니다. 각 테이블에서 가장 가까운 c개 주문대까지 거리 합의 총합을 최소로 만드는 문제입니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 비트 연산, 정렬
정답자
아직 제출이 없습니다

문제

Taja는 친구들과 함께 카페 In the cube에 자주 간다. 이 카페는 주문 방식이 매우 편리하다. 손님은 자동 주문대로 걸어가서 원하는 요리를 고른다. 주문대는 여러 대 있으며, 모두 카페 안의 정해진 위치에 고정되어 있다.

손님은 테이블 앞에 앉는다. 테이블은 kk개 있다. ii번째 테이블은 최대 cic_i명까지 수용할 수 있다. 테이블의 불편도는 그 테이블에서 가까운 순서로 cic_i개 주문대까지의 거리 합이다.

형식적으로 카페는 격자 (0,0)(0, 0)부터 (5000,5000)(5000, 5000)까지이다. 각 칸 (x,y)(x, y) (0≤x,y≤50000 \le x, y \le 5000)에는 자동 주문대 하나, 테이블 하나, 또는 아무것도 놓이지 않을 수 있다. 두 칸 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2) 사이의 거리는 ∣x2−x1∣+∣y2−y1∣|x_2 - x_1| + |y_2 - y_1|이다.

모든 테이블의 불편도 합이 최소가 되도록 테이블을 배치해야 한다.

입력

첫 줄에 두 정수 nn과 kk(1≤n≤181 \le n \le 18, 1≤k≤2001 \le k \le 200)가 주어진다. 각각 자동 주문대의 수와 테이블의 수이다.

다음 nn개 줄에는 ii번째 주문대의 좌표 xix_i와 yiy_i가 주어진다(0≤xi,yi≤50000 \le x_i, y_i \le 5000).

다음 kk개 줄에는 각각 정수 cjc_j(1≤cj≤n1 \le c_j \le n)가 하나씩 주어진다. 이는 jj번째 테이블의 좌석 수이다.

출력

최소 불편도 합을 정수 하나로 출력한다.

힌트

첫 번째 예제에서 가능한 테이블 배치는 위 그림과 같다.

예제2

  1. 예제 1

    입력
    3 4
    1 2
    4 1
    5 4
    1
    2
    3
    3
    
    예상 출력
    20
    
  2. 예제 2

    입력
    2 10
    0 0
    5000 5000
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    
    예상 출력
    16