#P16439. PM8143雷达测速记录

PM8143雷达测速记录

题目背景

一条公路的两端各安装了一台雷达测速仪。第一台雷达记录每辆车驶入公路的时刻,第二台雷达记录每辆车驶离公路的时刻。

原本只要把同一辆车的进入时刻与离开时刻对应起来,就能计算它在公路上的行驶时间,并据此判断是否超速。然而,负责整理记录的人在离职前打乱了全部数据,现在已经无法知道每个进入时刻究竟对应哪个离开时刻。

为了制定本年度的罚款预算,你需要在所有可能的合法配对方式中,求出罚款总额的最小值和最大值。

题目描述

共有 NN 辆车。

给定两个长度均为 NN 的数组:

  • enterTimes:所有车辆进入公路的时刻;
  • exitTimes:所有车辆离开公路的时刻。

你需要在两个数组之间建立一个一一对应关系。每个进入时刻和每个离开时刻都必须恰好使用一次。

若进入时刻为 aa,离开时刻为 bb,则这组配对合法当且仅当

b>a.b>a.

此时车辆的行驶时间为

T=ba.T=b-a.

已知超速时间标准为 speedTime

  • TspeedTimeT\geq \texttt{speedTime},该车辆没有超速,罚款为 00
  • T<speedTimeT<\texttt{speedTime},理论罚款为
(speedTimeT)2,(\texttt{speedTime}-T)^2,

但单辆车的罚款不能超过 fineCap

因此,单辆车的实际罚款为

$$\min\left(\texttt{fineCap},\;(\texttt{speedTime}-T)^2\right).$$

你需要求出:

  1. 在所有合法的一一配对中,罚款总额的最小值;
  2. 在所有合法的一一配对中,罚款总额的最大值。

若不存在能够使用全部进入时刻和离开时刻的合法配对,则输出 -1

输入格式

第一行包含三个整数 NNspeedTimefineCap

第二行包含 NN 个整数,表示数组 enterTimes

第三行包含 NN 个整数,表示数组 exitTimes

输出格式

若不存在合法的一一配对,输出:

-1

否则输出两个整数,依次表示罚款总额的最小值和最大值。

数据范围

  • 1N501\leq N\leq 50
  • 0enterTimesi10000\leq \texttt{enterTimes}_i\leq 1000
  • 0exitTimesi10000\leq \texttt{exitTimes}_i\leq 1000
  • 1speedTime10001\leq \texttt{speedTime}\leq 1000
  • 0fineCap100000\leq \texttt{fineCap}\leq 10000

样例 1

输入

2 3 100
1 2
4 5

输出

0 1

说明

存在两种配对方式:

  • (1,4)(1,4)(2,5)(2,5):两辆车的行驶时间均为 33 秒,罚款总额为 00
  • (1,5)(1,5)(2,4)(2,4):第二辆车只行驶了 22 秒,罚款为 (32)2=1(3-2)^2=1

因此最小罚款为 00,最大罚款为 11

样例 2

输入

2 100 100
2 1
60 40

输出

200 200

说明

无论如何配对,两辆车的罚款都会达到每辆车 100100 的上限,因此总罚款始终为 200200

样例 3

输入

5 1 30
1000 584 390 392 109
987 724 814 597 422

输出

-1

说明

进入时刻 10001000 不可能与任何离开时刻合法配对,因此不存在完整的一一对应关系。

样例 4

输入

5 10 50
3 6 4 2 9
4 7 5 3 9

输出

-1

样例 5

输入

6 2 99
1 2 5 6 9 10
3 4 7 8 11 12

输出

0 3

样例 6

输入

6 5 99
1 2 5 6 9 10
3 4 7 8 11 12

输出

54 60