QOJ.ac

QOJ

时间限制: 1.0 s 内存限制: 2048 MB 总分: 100

#16178. 分析合同

统计

克鲁斯卡尔博士(Doctor Kruskal)正在创办一项泰伯利亚(tiberium)贸易业务。他有 $N$ 个潜在的泰伯利亚供应商,以及许多有兴趣获取泰伯利亚以运行自己工业的客户。

日历天数按时间顺序用正整数编号,每个供应商由 $1$ 到 $N$ 之间的唯一整数标识。供应商 $i$ 可以从第 $S_i$ 天起(包含第 $S_i$ 天)的任何一天供应泰伯利亚,但不能在第 $S_i$ 天之前供应。他们收取的服务价格为每天 $P_i$ 美元。由于克鲁斯卡尔非常聪明,供应商列表中仅包含城市中最好的供应商。此外,对于 $i = 1, 2, \dots, N - 1$,满足 $S_i < S_{i+1}$ 且 $P_i > P_{i+1}$。

克鲁斯卡尔的系统维护着一个可用客户的数据库。最初,该数据库为空,不包含任何客户。客户将陆续到达,并在到达时立即被添加到数据库中。第 $j$ 个客户有兴趣在截止到第 $E_j$ 天(包含第 $E_j$ 天)的任何一天接收泰伯利亚。对于他们接收泰伯利亚的每一天,他们的工业将产生 $R_j$ 美元的每日总收入。因此,如果克鲁斯卡尔将供应商 $i$ 与客户 $j$ 进行匹配,在扣除泰伯利亚成本后,该项交易的最终利润将为 $(R_j - P_i) \times (E_j - S_i + 1)$,其中要求 $S_i \le E_j$,否则无法提供任何泰伯利亚。

在任何时刻,克鲁斯卡尔的系统都可以针对任意特定的供应商 $i$,快速计算出数据库中所有可用客户里的最优客户,使得该供应商与该客户匹配时的交易利润最大化,并报告该最大利润。如果对于某个供应商,与任何可用客户匹配都无法获得正利润,则系统报告利润为零。

请注意,当系统被要求计算某个给定供应商的最大利润时,该供应商最多与一个可用客户进行匹配,且这种匹配对未来的操作没有任何影响。这意味着该供应商和该客户都可以在未来的匹配中再次被考虑。

你的任务是实现克鲁斯卡尔的系统。

输入格式

第一行包含一个整数 $N$($1 \le N \le 2 \times 10^5$),表示供应商的数量。

接下来的 $N$ 行中,第 $i$ 行描述供应商 $i$,包含两个整数 $S_i$ 和 $P_i$($1 \le S_i, P_i \le 10^9$),分别表示该供应商的起始天数和每日价格。保证对于 $i = 1, 2, \dots, N - 1$,有 $S_i < S_{i+1}$ 且 $P_i > P_{i+1}$。

下一行包含一个整数 $Q$($1 \le Q \le 2 \times 10^5$),表示需要处理的操作数量。

接下来的 $Q$ 行按系统执行的顺序描述操作,每行一个操作。操作共有两种类型:

  • 如果操作是向数据库中添加一个客户,则该行包含小写字母 c,后跟两个整数 $E$ 和 $R$($1 \le E, R \le 10^9$),分别表示该客户的截止天数和每日总收入。
  • 如果操作是请求计算某个供应商的最大利润,则该行包含小写字母 s,后跟一个整数 $I$($1 \le I \le N$),表示该供应商的编号。保证输入中至少包含一个此类操作。

输出格式

对于每个类型为 s 的操作,输出一行。该行必须包含一个整数,表示将给定供应商与可用客户匹配时所能获得的最大可能利润。按照操作在输入中出现的顺序输出结果。

样例

输入样例 1

4
2 8
4 5
7 3
9 2
11
s 1
c 10 10
s 1
s 2
s 3
s 4
c 7 26
s 2
s 4
s 3
s 1

输出样例 1

0
18
35
28
16
84
16
28
108

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.