아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

소형 비행 로봇 개발

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

요약
로봇은 상하좌우 이동에 1, 구멍으로 한 층 오를 때 100 에너지를 쓰고 최상층의 막히지 않은 한 칸에 모두 모이는 최소 합계를 구합니다.
난이도

어려움10점 중 9점

유형
최단 경로, 그래프, 기하
정답자
아직 제출이 없습니다

문제

연구실에서 소형 비행 로봇을 개발하고 있다.

연구실은 층이 KK개인 상자 모양 건물이고, 층에는 아래에서 위로 11번부터 KK번까지 번호가 붙어 있다. 각 층의 바닥은 정사각형이고 변이 동서 방향과 남북 방향에 정확히 맞춰져 있으며, R×RR \times R개의 칸으로 나뉘어 있다. zz번째 층에서 서쪽으로부터 xx번째 열, 남쪽으로부터 yy번째 행에 있는 칸을 (x,y,z)(x, y, z)로 쓴다. xx와 yy는 11부터 센다. z>1z > 1인 모든 xx, yy, zz에 대해 칸 (x,y,z)(x, y, z)는 칸 (x,y,z−1)(x, y, z - 1) 바로 위에 있다.

연구실 안에는 로봇 NN대가 날고 있고 11번부터 NN번까지 번호가 붙어 있다. 처음에 ii번 로봇은 칸 (xi,yi,zi)(x_i, y_i, z_i)에 있다.

로봇 한 대를 원하는 곳으로 옮기는 기능은 이미 완성했다. 다음 목표는 모든 로봇을 한 칸에 모으면서 에너지를 가장 적게 쓰는 것이다.

22층 이상인 층의 바닥에는 구멍이 여러 개 뚫려 있다. 구멍은 직사각형이고 변이 칸의 변과 맞닿아 있다. 건물에는 구멍이 MM개 있고 11번부터 MM번까지 번호가 붙어 있다. jj번 구멍은 정수 다섯 개 u1ju_{1j}, v1jv_{1j}, u2ju_{2j}, v2jv_{2j}, wjw_j로 주어지며, u1j≤x≤u2ju_{1j} \le x \le u_{2j}이고 v1j≤y≤v2jv_{1j} \le y \le v_{2j}인 칸 (x,y,wj)(x, y, w_j)를 모두 덮는다.

로봇은 두 가지 방법으로 움직인다.

  • 로봇을 북, 남, 동, 서 중 한 방향으로 인접한 칸에 옮길 수 있다. 이때 로봇은 에너지를 11 쓴다.
  • 로봇 바로 위에 지나갈 구멍이 있으면 그 구멍으로 로봇을 한 층 올릴 수 있다. 이때 로봇은 에너지를 100100 쓴다.

아래에 구멍이 있어도 로봇은 떨어지지 않는다. 로봇 두 대 이상을 같은 칸에 둘 수 있다.

바닥에 구멍이 없는 KK층의 칸 하나에 로봇을 모두 모으려고 한다. 로봇들이 쓰는 총 에너지의 최솟값을 출력하라.

입력

입력은 데이터 집합 최대 3232개로 이루어지고, 각 데이터 집합의 형식은 다음과 같다. 입력의 모든 값은 정수이다.

N
M K R
x1 y1 z1
...
xN yN zN
u11 v11 u21 v21 w1
...
u1M v1M u2M v2M wM

NN은 연구실에 있는 로봇의 수이다(1≤N≤1001 \le N \le 100). MM은 구멍의 수이고(1≤M≤501 \le M \le 50), KK는 층의 수이며(2≤K≤102 \le K \le 10), RR은 한 층의 한 행과 한 열에 들어 있는 칸의 수이다(3≤R≤1063 \le R \le 10^6).

각 ii에 대해 정수 xix_i, yiy_i, ziz_i는 ii번 로봇이 처음에 있는 칸을 나타낸다(1≤xi≤R1 \le x_i \le R, 1≤yi≤R1 \le y_i \le R, 1≤zi≤K1 \le z_i \le K). 각 jj에 대해 정수 u1ju_{1j}, v1jv_{1j}, u2ju_{2j}, v2jv_{2j}, wjw_j는 jj번 구멍의 위치와 범위를 나타낸다(1≤u1j≤u2j≤R1 \le u_{1j} \le u_{2j} \le R, 1≤v1j≤v2j≤R1 \le v_{1j} \le v_{2j} \le R, 2≤wj≤K2 \le w_j \le K).

다음이 보장된다.

  • 22층 이상인 각 층에는 구멍이 적어도 하나 있다.
  • 각 층에는 어떤 구멍에도 속하지 않는 칸이 적어도 하나 있다.
  • 두 구멍은 겹치지 않는다. 즉, 각 칸은 많아야 구멍 하나에 속한다.

로봇 두 대 이상이 같은 칸에서 시작할 수 있다. 이웃한 두 칸이 서로 다른 구멍에 속할 수도 있다.

입력의 끝은 00 하나만 있는 줄로 나타낸다.

출력

각 데이터 집합마다 최소 총 에너지 소모량을 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    2
    1 2 8
    1 1 1
    8 8 1
    3 3 3 3 2
    3
    3 2 3
    1 1 2
    1 1 2
    1 1 2
    1 1 1 1 2
    1 2 1 2 2
    2 1 2 1 2
    2
    2 3 100
    100 50 1
    1 50 3
    100 1 100 100 3
    1 1 1 100 2
    5
    6 7 60
    11 11 1
    11 51 1
    51 11 1
    51 51 1
    31 31 1
    11 11 51 51 2
    11 11 51 51 3
    11 11 51 51 4
    11 11 51 51 5
    18 1 54 42 6
    1 43 59 60 7
    5
    6 4 9
    5 5 3
    1 1 1
    1 9 1
    9 1 1
    9 9 1
    3 3 7 7 4
    4 4 6 6 2
    1 1 2 2 3
    1 8 2 9 3
    8 1 9 2 3
    8 8 9 9 3
    5
    10 5 50
    3 40 1
    29 13 2
    39 28 1
    50 50 1
    25 30 5
    3 5 10 10 2
    11 11 14 14 2
    15 15 20 23 2
    40 40 41 50 2
    1 49 3 50 2
    30 30 50 50 3
    1 1 10 10 4
    1 30 1 50 5
    20 30 20 50 5
    40 30 40 50 5
    15
    2 2 1000000
    514898 704203 1
    743530 769450 1
    202298 424059 1
    803485 898125 1
    271735 512227 1
    442644 980009 1
    444735 799591 1
    474132 623298 1
    67459 184056 1
    467347 302466 1
    477265 160425 2
    425470 102631 2
    547058 210758 2
    52246 779950 2
    291896 907904 2
    480318 350180 768473 486661 2
    776214 135749 872708 799857 2
    0
    
    예상 출력
    216
    6
    497
    3181
    1365
    1930
    6485356