정원

시간 제한1초메모리 제한128 MB

요약
장미 n송이가 있는 l×w 격자에서 각각 장미 k송이를 포함하는 겹치지 않는 두 직사각형을 놓아 두 둘레의 합을 최소로 구한다.
난이도

어려움10점 중 8점

유형
배열, 누적 합, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

재현이는 가장 아름다운 정원을 가진 사람으로, 정원에 nn송이의 장미를 심어 두었다. 모든 꽃이 활짝 핀 어느 여름날, 재현이는 아름다운 장미를 바라보다가 문득 나라 경제가 걱정되어, 두 정원사 박승원과 신승원을 고용해 실업률을 낮추고 경제를 살리기로 했다.

정원은 가로 ll미터, 세로 ww미터인 직사각형이며, 한 변이 11미터인 l×wl \times w개의 정사각형 칸으로 나뉜다. 정원의 변은 xx축, yy축과 평행하고, 정원 안의 모든 칸은 1≤x≤l1 \le x \le l, 1≤y≤w1 \le y \le w를 만족하는 정수 좌표 (x,y)(x, y)로 나타낼 수 있다.

(l1,w1)(l_1, w_1), (l1,w2)(l_1, w_2), (l2,w1)(l_2, w_1), (l2,w2)(l_2, w_2)를 네 꼭짓점으로 하는 직사각형 영역은 1≤l1≤l2≤l1 \le l_1 \le l_2 \le l, 1≤w1≤w2≤w1 \le w_1 \le w_2 \le w를 만족하는 모든 칸 (x,y)(x, y)(즉 l1≤x≤l2l_1 \le x \le l_2, w1≤y≤w2w_1 \le y \le w_2)를 포함하며, 이 영역의 둘레는 2⋅(l2−l1+1)+2⋅(w2−w1+1)2 \cdot (l_2 - l_1 + 1) + 2 \cdot (w_2 - w_1 + 1)이다.

재현이는 정원에 서로 겹치지 않는 두 개의 직사각형 울타리를 세우고, 각 울타리 안에 들어가는 장미의 수를 똑같이 kk송이로 맞추려 한다. 이렇게 만든 두 구역을 각각 박승원과 신승원에게 맡길 계획이다.

그런데 울타리는 수입품이라 경제를 살리는 데 도움이 되지 않는다. 그래서 재현이는 울타리의 총 길이(두 둘레의 합)를 최소로 만들어 내수를 살리려 한다.

두 구역은 칸을 공유하지 않아야 하고, 각 구역 안에는 정확히 kk송이의 장미가 있어야 한다. 두 울타리가 맞닿는 부분에는 울타리를 두 번 세우므로, 그 길이도 둘레의 합에 두 번 반영된다.

정원의 크기, 장미들의 위치, 각 구역에 넣을 장미 수를 입력받아, 조건을 만족하면서 울타리의 총 길이가 최소가 되는 두 구역을 찾는 프로그램을 작성하시오. 한 칸에 여러 송이의 장미가 있을 수도 있다.

입력

첫째 줄에 정원의 가로와 세로 길이 ll, ww가 주어진다. (1≤l,w≤2501 \le l, w \le 250)

둘째 줄에 전체 장미의 수 nn과 각 구역에 넣을 장미의 수 kk가 주어진다. (2≤n≤50002 \le n \le 5000, 1≤k≤n/21 \le k \le n/2)

이어지는 nn개의 줄에 ii번째 장미가 있는 칸을 나타내는 두 정수 lil_i, wiw_i가 주어진다. (1≤li≤l1 \le l_i \le l, 1≤wi≤w1 \le w_i \le w) 한 칸에 여러 송이의 장미가 있을 수 있다.

출력

둘레의 합이 최소가 되는 두 구역을 찾아, 그 두 둘레의 합을 한 줄에 출력한다. 조건을 만족하는 두 구역을 만들 수 없으면 NO를 출력한다.

힌트

예제1

  1. 예제 1

    입력
    6 5
    7 3
    3 4
    3 3
    6 1
    1 1
    5 5
    5 5
    3 1
    
    예상 출력
    22