도로 건설 사업 Batch 컴파일 명령
시간 제한 | 메모리 제한 | 제출 횟수 | 통과한 사람 수 | 비율 |
---|---|---|---|---|
5000 ms | 256 MiB | 185 | 38 | 20.54% |
IOI 나라에서는 교통망을 새로 건설하려고 합니다. IOI 나라는 2차원 좌표 평면으로 나타낼 수 있고, 이 평면 위에는 N개의 마을이 있습니다. 이 중 i번째 (1 ≤ i ≤ N) 마을은 점 (Xi, Yi)로 표현됩니다. 교통망 건설은 다음과 같은 순서로 진행됩니다.
- N개의 마을 중 1개 이상의 마을에 국제 공항을 건설합니다. 국제 공항은 한 개 건설할 때마다 정해진 비용이 추가로 듭니다.
- 마을 사이를 잇는 도로들을 몇 개 건설합니다. 도로는 마을을 나타내는 점들을 직접 잇는, x축 또는 y축에 평행하는 선분으로, 새로 건설할 때마다 그 길이만큼의 비용이 추가로 듭니다.
이 때, 아래 조건을 만족해야 합니다.
- IOI 나라에는 지반이 약한 것과 같은 이유로 도로를 건설할 수 없는 영역이 M개 있습니다. 각 영역은 직사각형으로 표현되며, j번째 (1 ≤ j ≤ M) 직사각형의 왼쪽 아래 점은 (Pj, Qj)이고 오른쪽 위의 점은 (Rj, Sj)입니다. (Pj < Rj, Qj < Sj) 모든 도로는 M개의 영역 중 하나와도 공통 부분을 가지면 안 됩니다. 영역은 직사각형의 변(경계) 역시 포함합니다. 따라서 영역을 나타내는 직사각형의 변과 공통 부분을 가지는 도로도 존재하면 안 됩니다.
- N개의 어떤 마을에서도, 도로를 따라 여러 도시를 거쳐 국제 공항이 있는 마을(공항만 있다면 어떤 마을이라도 괜찮음)에 도착할 수 있어야 합니다.
IOI 나라는 이 건설 사업의 발주 업체를 선정해야 합니다. C개의 건설 업체가 후보로 선정되었습니다. 이 중 k번째 (1 ≤ k ≤ C) 건설 업체는, 국제 공항을 한 개 건설하는 데 Bk의 비용이 들고, 최대 Hk개의 국제 공항을 건설할 수 있습니다. 도로 건설에 드는 비용은 건설 업체별로 다르지 않으며(모두 길이 1당 비용 1 추가), 건설할 도로의 개수나 길이의 제한은 없습니다. 각 건설 업체에 대해, 그 건설 업체가 위의 조건을 만족하도록 교통망을 적절히 건설할 때 드는 비용의 합의 최솟값을 알고자 합니다.
건설할 수 있는 국제 공항의 수가 작기 때문에, 조건을 만족하면서 교통망을 건설할 수 없는 건설 업체가 있을 수도 있습니다. 그러한 경우, 비용의 합 대신 조건을 만족할 수 없다는 것을 알려줘야 합니다.
해야 할 일
IOI나라의 마을의 수를 나타내는 정수 N, 각 마을의 좌표, 도로를 건설할 수 없는 영역의 수를 나타내는 정수 M, 각 영역의 꼭짓점의 좌표, 발주 업체 후보 수를 나타내는 정수 C와, 각 건설 업체의 정보가 주어졌을 때, 각 건설 업체에 대해, 그 건설 업체가 위의 조건을 만족하도록 교통망을 적절히 건설할 때 드는 비용의 합의 최솟값을 구하는 프로그램을 작성하세요.
입력 형식
첫 번째 줄에는 세 개의 정수 N, M, C가 공백을 사이로 두고 주어집니다. N은 IOI 나라의 마을의 수, M은 도로를 건설할 수 없는 영역의 수, C는 발주 업체 후보 수를 나타냅니다.
이후 N개의 줄이 주어지는데, 그 중 i번째 (1 ≤ i ≤ N) 줄에는 2개의 정수 Xi와 Yi가 공백을 사이로 두고 주어지며, 이는 i번째 마을의 좌표가 (Xi, Yi)임을 나타냅니다.
이후 M개의 줄이 주어지는데, 그 중 j번째 (1 ≤ j ≤ M) 줄에는 4개의 정수 Pj, Qj, Rj, Sj가 공백을 사이로 두고 주어지며, 이는 j번째 도로 건설 불가 영역을 나타내는 직사각형의 왼쪽 아래 점의 좌표가 (Pj, Qj), 오른쪽 위 점의 좌표가 (Rj, Sj)임을 나타냅니다.
이후 C개의 줄이 주어지는데, 그 중 k번째 (1 ≤ k ≤ C) 줄에는 2개의 정수 Bk, Hk가 공백을 사이로 두고 주어지며, 이는 k번째 건설 업체는 국제 공항을 하나 건설하는 데 Bk의 비용이 들며, 최대 Hk개의 국제 공항을 건설할 수 있다는 것을 의미합니다.
출력 형식
C개의 줄을 출력합니다. 이 중 k번째 (1 ≤ k ≤ C) 줄에는, k번째 건설 업체가 위의 조건을 만족하도록 교통망을 적절히 건설할 때 드는 비용의 합의 최솟값을 출력합니다. 단, k번째 건설 업체가 위의 조건을 만족하도록 교통망을 적절히 건설할 수 없을 시, - 1을 출력합니다.
제약 조건
- 1 ≤ N ≤ 200 000
- 1 ≤ M ≤ 200 000
- 1 ≤ C ≤ 500 000
- 0 ≤ Xi ≤ 1 000 000 000 (1 ≤ i ≤ N)
- 0 ≤ Yi ≤ 1 000 000 000 (1 ≤ i ≤ N)
- 한 점 위에 두 개 이상의 마을이 있는 경우는 없습니다.
- 0 ≤ Pj < Rj ≤ 1 000 000 000 (1 ≤ j ≤ M)
- 어떤 영역도 도로를 그 영역의 내부 또는 경계 위에 포함하지 않습니다.
- 1 ≤ Bk ≤ 1 000 000 000 (1 ≤ k ≤ C)
- 1 ≤ Hk ≤ N (1 ≤ k ≤ C)
부분문제
부분문제 1 [10점]
- M ≤ 100
- C ≤ 100
부분문제 2 [30점]
- C ≤ 100
부분문제 3 [30점]
- M ≤ 100
부분문제 4 [30점]
추가 제약 조건이 없습니다.
예제
입력 예시 1 | 출력 예시 1 |
---|---|
4 2 3 1 1 10 1 1 10 10 10 4 0 8 9 1 4 9 8 7 4 10 3 1 1 | 28 38 -1 |
위 예제를 그림으로 나타내면 아래와 같습니다. 굵은 선으로 표시된 직사각형은 도로를 건설할 수 없는 영역을 나타내며, 따라서 그 내부 (경계 포함)에는 도로를 건설할 수 없습니다.
2번 마을과 4번 마을을 잇는 도로, 3번 마을과 4번 마을을 잇는 도로는 건설할 수 있습니다. 하지만 1번 마을과 2번 마을을 잇는 도로, 1번 마을과 3번 마을을 잇는 도로는 건설할 수 없습니다. (도로는 직사각형의 경계를 포함하는 내부 위를 지나갈 수 없습니다)
첫 번째 건설 회사는 최대 4개의 국제 공항을 한 개 당 7의 비용을 들여 건설할 수 있습니다. 이 경우, 도로를 하나도 건설하지 않고, 모든 마을에 국제 공항을 하나씩 세우는 것이 최선이며, 그때의 비용의 합은 7 × 4 = 28입니다.
두 번째 건설 회사는 최대 3개의 국제 공항을 한 개 당 10의 비용을 들여 건설할 수 있습니다. 이 경우, 2번 마을과 4번 마을을 잇는 길이가 9인 도로, 3번 마을과 4번 마을을 잇는 길이가 9인 도로를 건설하고, 1번 마을과 2번 마을에 국제 공항을 세우는 것이 최선입니다. 그때의 비용의 합은 10 × 2 + 9 + 9 = 38입니다.
세 번째 건설 회사는 최대 1개의 국제 공항을 한 개 당 1의 비용을 들여 건설할 수 있습니다. 하지만 1번 마을과 다른 어떤 마을을 잇는 도로도 건설할 수 없기 때문에, 문제의 조건을 만족하도록 교통망을 만들기 위해서는 적어도 2개의 국제 공항을 세워야 합니다. 따라서 이 회사는 교통망을 만들 수 없으며, 따라서 -1을 출력합니다.