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

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

슬레이트 모던 (라지)

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

요약
거대한 R x C 격자의 인접한 칸 값 차이가 D 이하가 되도록 N개의 고정된 칸 값을 지키며 모든 칸을 양의 정수로 채우고, 합의 최댓값을 구하거나 불가능을 판정한다.
난이도

어려움10점 중 9점

유형
그래프, 최단 경로, 수학, 구현
정답자
아직 제출이 없습니다

문제

슬레이트 모던 갤러리는 회색조 그림만 전시한다. 갤러리에 걸리는 그림은 RR행 CC열 격자여야 하고, 각 칸은 양의 정수 밝기 값으로 칠한다. 보는 사람이 놀라지 않도록, 변을 맞대고 붙어 있는 두 칸의 밝기 차이는 DD 이하여야 한다. 꼭짓점만 닿는 두 칸에는 이 조건이 적용되지 않는다.

화가 코디자말은 어젯밤 영감을 받아 서로 다른 칸 NN개를 골라 양의 정수 밝기 값을 칠해 두었다. 오늘에야 갤러리의 규칙을 들은 코디자말은 남은 칸을 모두 양의 정수 밝기 값으로 채워 규칙에 맞는 그림을 완성할 수 있는지 알고 싶어 한다. 완성할 수 있다면 검은 물감을 아끼기 위해 모든 칸의 밝기 값 합을 최대로 만들려고 한다. 합이 매우 커질 수 있으므로, 최대 합을 소수 109+710^9+7로 나눈 나머지를 구한다.

입력

첫 줄에 테스트 케이스 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 네 정수 RR, CC, NN, DD가 공백으로 구분되어 주어진다. 이어지는 NN개의 줄 중 ii번째 줄에는 세 정수 RiR_i, CiC_i, BiB_i가 주어진다. 이는 격자의 RiR_i행 CiC_i열 칸이 이미 밝기 값 BiB_i로 칠해져 있다는 뜻이다. 행 번호와 열 번호는 1부터 시작한다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이다. 그림을 완성할 수 없으면 yy는 IMPOSSIBLE이고, 완성할 수 있으면 yy는 모든 칸의 밝기 값 합의 최댓값을 109+710^9+7로 나눈 나머지이다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤R≤1091 \le R \le 10^9
  • 1≤C≤1091 \le C \le 10^9
  • 1≤N≤2001 \le N \le 200
  • 1≤D≤1091 \le D \le 10^9
  • 모든 ii에 대해 1≤Ri≤R1 \le R_i \le R, 1≤Ci≤C1 \le C_i \le C, 1≤Bi≤1091 \le B_i \le 10^9이다. 10910^9이라는 상한은 코디자말이 이미 칠한 칸에만 적용된다. 나머지 칸에는 10910^9보다 큰 밝기 값을 써도 된다.
  • N<R×CN < R \times C이다. 즉, 비어 있는 칸이 적어도 하나 있다.
  • i≠ji \ne j이면 Ri≠RjR_i \ne R_j이거나 Ci≠CjC_i \ne C_j이다. 즉, 주어지는 칸은 모두 서로 다르다.

설명

첫 번째 예제의 1번 테스트 케이스에서 합을 최대로 만드는 그림은 다음과 같고, 합은 40이다.

6 7 9
4 6 8

2번 테스트 케이스에서 최적의 그림은 2000000000 1000000000이고 합은 3000000000이다. 이를 109+710^9+7로 나눈 나머지는 999999986이다.

3번 테스트 케이스는 완성할 수 없다. 2행 칸에 어떤 값을 넣어도 위아래로 이미 칠해진 두 칸 중 적어도 하나와 차이가 너무 커진다.

4번 테스트 케이스에서는 코디자말이 이미 칠한 두 칸의 밝기 차이가 너무 커서 그림을 이어 나갈 수 없다.

예제2

  1. 예제 1

    입력
    4
    2 3 2 2
    2 1 4
    1 2 7
    1 2 1 1000000000
    1 2 1000000000
    3 1 2 100
    1 1 1
    3 1 202
    2 2 2 2
    2 1 1
    2 2 4
    
    예상 출력
    Case #1: 40
    Case #2: 999999986
    Case #3: IMPOSSIBLE
    Case #4: IMPOSSIBLE
    
  2. 예제 2

    입력
    3
    3 3 1 1
    2 2 5
    1 5 2 2
    1 1 10
    1 5 4
    4 1 1 3
    4 1 7
    
    예상 출력
    Case #1: 57
    Case #2: 38
    Case #3: 46