만드는 중입니다

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

피라미드 기단 2

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

요약
격자에 놓는 정사각형 기지 중 겹치는 장애물 제거 비용 합이 예산을 넘지 않는 가장 큰 한 변 길이를 구합니다.
난이도

보통10점 중 7점

유형
이분 탐색, 세그먼트 트리, 기하
정답자
아직 제출이 없습니다

문제

새 피라미드를 세울 터 가운데 예산으로 감당할 수 있는 가장 큰 터를 찾으려 한다. 부지 조사 결과는 M×NM \times N 크기의 정사각형 칸 격자로 정리되어 있다. 피라미드의 기단은 격자의 변과 평행한 정사각형이어야 한다.

조사에서 장애물 PP개를 찾았다. 각 장애물은 격자의 변과 평행한 직사각형이고, 서로 겹칠 수 있다. 피라미드를 세우려면 기단이 덮는 칸에서 장애물을 모두 없애야 한다. ii번 장애물을 치우는 비용은 CiC_i다. 장애물은 통째로만 치울 수 있고, 일부만 치우는 것은 불가능하다. 한 장애물을 치워도 그것과 겹친 다른 장애물은 그대로 남는다.

부지의 크기 MM과 NN, 장애물 PP개의 위치와 제거 비용, 예산 BB가 주어질 때, 제거 비용의 합이 BB를 넘지 않으면서 만들 수 있는 기단 한 변의 최대 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 MM과 NN이 공백 하나로 구분되어 주어진다. (1≤M,N≤1061 \le M, N \le 10^6)

둘째 줄에 예산 BB가 주어진다. (0<B≤2×1090 < B \le 2 \times 10^9)

셋째 줄에 장애물의 개수 PP가 주어진다. (1≤P≤300001 \le P \le 30000)

다음 PP개의 줄에 장애물의 정보가 한 줄에 하나씩 주어진다. 이 가운데 ii번째 줄은 ii번 장애물을 나타내고, 다섯 정수 Xi1X_{i1}, Yi1Y_{i1}, Xi2X_{i2}, Yi2Y_{i2}, CiC_i가 공백 하나로 구분되어 주어진다. 앞의 두 값은 장애물에서 가장 아래쪽 가장 왼쪽 칸의 좌표, 그다음 두 값은 가장 위쪽 가장 오른쪽 칸의 좌표, 마지막 값은 그 장애물을 치우는 비용이다. 격자에서 가장 아래쪽 가장 왼쪽 칸의 좌표는 (1,1)(1, 1)이고, 가장 위쪽 가장 오른쪽 칸의 좌표는 (M,N)(M, N)이다. (1≤Xi1≤Xi2≤M1 \le X_{i1} \le X_{i2} \le M, 1≤Yi1≤Yi2≤N1 \le Y_{i1} \le Y_{i2} \le N, 1≤Ci≤70001 \le C_i \le 7000)

출력

첫째 줄에 만들 수 있는 기단 한 변의 최대 길이를 정수 하나로 출력한다. 피라미드를 전혀 세울 수 없으면 00을 출력한다.

힌트

그림은 한 변의 길이가 44인 기단을 놓을 수 있는 두 위치를 보여준다.

예제4

  1. 예제 1

    입력
    6 9
    42
    5
    4 1 6 3 12
    3 6 5 6 9
    1 3 3 8 24
    3 8 6 9 21
    5 1 6 2 20
    
    예상 출력
    4
    
  2. 예제 2

    입력
    1 1
    5
    1
    1 1 1 1 5
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1 1
    4
    1
    1 1 1 1 5
    
    예상 출력
    0
    
  4. 예제 4

    입력
    5 5
    10
    1
    1 1 5 5 10
    
    예상 출력
    5