사과 시장

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

요약
격자에 담긴 사과 재고와 각 고객의 예산 및 방문 사각형이 주어질 때, 사과를 팔아 얻을 수 있는 최대 수익을 구한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 누적 합
정답자
아직 제출이 없습니다

문제

여러 가게가 모인 시장을 관리하고 있다. 가게는 n×mn \times m 격자 모양으로 배치되어 있고, 모든 가게가 사과를 판다. 어느 가게에서든 사과 한 개의 값은 정확히 1 말레이시아 링깃이다.

손님 여러 명이 이 시장을 지나간다. 각 손님은 시장의 부분 직사각형 안에 있는 가게만 들르고, 쓸 수 있는 돈이 정해져 있다. 또한 가게마다 사과 재고가 다르고 한정되어 있으며, 손님과 손님 사이에 재고는 다시 채워지지 않는다. 각 가게가 각 손님에게 사과를 몇 개 팔지 마음대로 정할 수 있을 때, 벌 수 있는 돈의 최댓값을 구하라.

입력

입력은 테스트 케이스 하나로 이루어진다. 프로그램은 서로 다른 입력으로 여러 번 실행될 수 있다. 첫째 줄에 세 정수 nn, mm, kk가 공백으로 구분되어 주어진다. 시장은 nn개의 행과 mm개의 열로 이루어져 있고 (1≤n,m≤501 \le n, m \le 50), 손님은 kk명이다 (1≤k≤1051 \le k \le 10^5).

다음 nn개의 줄에는 각각 mm개의 정수 aa (0≤a≤1090 \le a \le 10^9)가 주어진다. 이 행렬은 각 가게의 사과 재고를 행 우선 순서로 나타낸다. a[r,c]a[r, c]는 rr번째 행, cc번째 열에 있는 가게의 사과 개수이다. 행 번호는 11부터 nn까지, 열 번호는 11부터 mm까지이다. 왼쪽 위 모서리가 a[1,1]a[1, 1]이고 오른쪽 아래 모서리가 a[n,m]a[n, m]이다.

다음 kk개의 줄에는 손님 한 명을 나타내는 다섯 정수 tt, bb (1≤t≤b≤n1 \le t \le b \le n), ll, rr (1≤l≤r≤m1 \le l \le r \le m), xx (0≤x≤1090 \le x \le 10^9)가 주어진다. 이 손님은 (t,l)(t, l)부터 (b,r)(b, r)까지의 부분 직사각형 (경계 포함) 안에서만 사과를 산다. tt는 위, bb는 아래, ll은 왼쪽, rr은 오른쪽 경계이다. 이 손님이 쓸 수 있는 돈은 정확히 xx 말레이시아 링깃이다.

출력

각 가게가 각 손님에게 사과를 몇 개 팔지 정해서 벌 수 있는 돈의 최댓값을 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    2 3 2
    1 2 3
    4 5 6
    1 2 2 3 20
    2 2 1 3 15
    
    예상 출력
    20