P12770 [POI 2018 R3] 出租车 Taxis
题目背景
翻译来自于 [LibreOJ](https://loj.ac/p/5078)。
题目描述
**题目译自 [XXV Olimpiada Informatyczna — III etap](https://sio2.mimuw.edu.pl/c/oi25-3/dashboard/) [Taksówki](https://szkopul.edu.pl/problemset/problem/pxbqUTPy3IuPDul9FdT2_Sth/statement/)**
Bajtazar 是《出租车与你》杂志的主编,每年发布拜托尼亚最便宜出租车公司排行榜。新一期排行榜即将来袭。
每家出租车公司 $i$ 的乘车费用由两部分组成:
- 固定上车费 $s_i$,与行程距离无关;
- 行程费,距离 $d$(单位:拜托米)乘以每拜托米的单价 $c_i$。
每家公司有固定的 $s_i$ 和 $c_i$ 参数。
Bajtazar 希望综合多种标准制定排行,但为避免偏见指控,他决定仅以价格为依据。他设定了理想的排行榜,希望通过选择一个正数(不一定为整数)的行程距离 $d$,使 $d$ 拜托米的费用排序与理想排行一致,允许自行处理平局情况。
然而,各公司试图贿赂 Bajtazar,且服务标准时有变动,导致理想排行频繁调整。编写程序,帮助他在每次调整后确定合适的距离参数 $d$。
输入格式
第一行包含一个自然数 $n$,表示出租车公司数量。
接下来的 $n$ 行描述各公司,每行包含两个自然数 $s_i, c_i$,分别表示上车费和每拜托米费用。
下一行包含 $n$ 个互不相同的自然数(范围 $[1, n]$),表示 Bajtazar 的初始理想排行(第 $i$ 个数为应排在第 $i$ 位的公司编号)。
再下一行包含一个自然数 $q$,表示调整次数。
接下来的 $q$ 行描述调整,每行包含两个不同的自然数 $a_i, b_i$,表示将排行中第 $a_i$ 位与第 $b_i$ 位交换。
输出格式
输出 $q+1$ 行,第 $i$ 行包含一个正有理数,表示使排行与前 $i-1$ 次调整后一致的距离 $d$,以不可约分数 $x/y$ 形式输出,$x, y \leq 10^9$。**若有多个 $d$ 满足条件,你需要输出最小的合法的 $d$。**
若无解,输出 `NIE`。
说明/提示
**样例 1 解释**
为实现排行 $2,1,3$,Bajtazar 可设 $d=4$,费用为 $8+3d=20, 12+2d=20, 9+4d=25$。公司 $1$ 和 $2$ 费用相等,可按理想顺序排列。交换第 $1$ 位和第 $3$ 位得 $3,1,2$,无任何 $d$ 可实现。再次交换第 $3$ 位和第 $2$ 位得 $1,3,2$,设 $d=1$,费用为 $11, 14, 13$。最后交换第 $2$ 位和第 $3$ 位得 $1,2,3$,设 $d=2$,费用为 $14, 16, 17$。
**附加样例**
1. $n=10, q=10$,满足子任务 $4$ 的随机样例。
2. $n=10, q=10$,随机样例。
3. $n=10, q=10$,$d=1/3$ 时各公司费用相同。
4. $n=1000, q=1000$,仅一种可能排行:任意 $d$ 下公司 $1$ 比 $2$ 便宜,$2$ 比 $3$ 便宜,依此类推,初始排行如此。每偶数次调整交换两位置,奇数次调整复原。
所有测试点满足 $1 \leq n \leq 500000, 0 \leq q \leq 5000000, 1 \leq s_i, c_i \leq 10^9$。
详细子任务附加限制及分值如下表所示。「无并列」表示任意正 $d$ 至多一对不同公司费用相等;「无 `NIE`」表示答案不含 `NIE`。
| 子任务 | 附加限制 | 分值 |
| :---: | :--: | :---: |
| $1$ | $q=0$,无并列 | $10$ |
| $2$ | $n, q \leq 2000$,无并列 | $10$ |
| $3$ | $n \leq 2000$,无并列 | $25$ |
| $4$ | 无 `NIE` | $30$ |
| $5$ | 无附加限制 | $25$ |