만드는 중입니다

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

광물 채굴

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

요약
격자에서 각 로봇을 기지에서 m번 이내의 인접 칸에 배치하고 한 칸에 q대를 넘지 않게 할 때, 받을 수 있는 앞쪽 묶음 수 k와 다음 묶음에서 받을 수 있는 로봇 수 z를 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 이분 탐색
정답자
아직 제출이 없습니다

문제

이웃 항성계에 있는 행성을 개발하는 프로젝트가 진행 중이다. 광물을 캐기 위해 로봇 여러 묶음을 이 행성으로 보낼 계획이다.

광물을 캘 지역은 가로 ww, 세로 hh 크기의 격자 사각형이다. 칸의 좌표는 (1,1)(1, 1)부터 (w,h)(w, h)까지이다. 일부 칸에는 전문가 기지가 있고, 로봇 묶음은 이 기지로 보내진다. 기지는 모두 ss개이며, ii번째 기지는 (xi,yi)(x_i, y_i) 칸에 있다.

jj번째 묶음은 기지 bjb_j로 보내지며, 로봇 njn_j대로 이루어져 있다. 묶음의 각 로봇은 이동 능력 mjm_j를 가진다. 묶음이 기지에 도착하면 각 로봇은 기지에서 출발해 행성 표면의 어떤 칸까지 이동한다. 이동 능력이 mm인 로봇은 인접한 여덟 칸 중 하나로 최대 mm번 이동할 수 있다(그림 1 참고).

그림 1

모든 묶음의 로봇을 배치하면 로봇을 활성화하고, 로봇은 광물 채굴을 시작한다. 이동 중에는 한 칸에 로봇이 여러 대 있어도 된다. 그러나 활성화된 뒤에는 어떤 칸에도 로봇이 qq대를 넘으면 안 된다.

입력

관리팀은 순서대로 보낼 수 있는 tt개의 로봇 묶음 정보를 받았다. 모든 묶음을 보낸 뒤에는 이동 능력에 제한이 있어서, 어느 칸에도 qq대를 넘지 않게 로봇을 배치하지 못할 수도 있다. 그래서 관리팀은 처음 kk개 묶음(0≤k≤t0 \le k \le t)을 골라 해당 기지로 전부 보낸다. k<tk < t이면 그다음 묶음, 즉 (k+1)(k+1)번째 묶음의 로봇 nk+1n_{k+1}대 중 zz대를 추가로 받는다(0≤z<nk+10 \le z < n_{k+1}).

관리팀은 kk를 최대화하고, 그다음 zz를 최대화한다.

출력

첫 줄에 ww, hh, ss, qq가 주어진다. 1≤w,h≤1051 \le w, h \le 10^5, 1≤s≤41 \le s \le 4, 1≤q≤1001 \le q \le 100이다. 이어지는 ss개 줄에는 기지의 좌표 xix_i, yiy_i가 주어진다(1≤xi≤w1 \le x_i \le w, 1≤yi≤h1 \le y_i \le h). 다음 줄에는 묶음 수 tt가 주어진다(1≤t≤1001 \le t \le 100). 이어지는 tt개 줄에는 bjb_j, njn_j, mjm_j가 주어진다(1≤bj≤s1 \le b_j \le s, 1≤nj≤w⋅h⋅q1 \le n_j \le w \cdot h \cdot q, 0≤mj<max⁡(w,h)0 \le m_j < \max(w, h)).

힌트

예제에서는 첫 번째 묶음 전체를 받고, 두 번째 묶음에서 로봇 7대를 추가로 받는다. 그림 2는 이 로봇들을 칸마다 한 대 이하가 되도록 배치한 모습이다. 기지는 원으로 표시했다. 기지 1에서 온 로봇이 있는 칸은 세로 빗금, 기지 2에서 온 로봇이 있는 칸은 회색으로 표시했다.

그림 2

예제1

  1. 예제 1

    입력
    4 3 2 1
    1 1
    3 2
    3
    1 4 1
    2 9 1
    1 12 2
    
    예상 출력
    1 7