CF756B Travel Card
题目描述
在 Bytesburg 推出了一个全新的公共交通售票系统。现在,所有交通工具只需一张通用交通卡。乘客每次乘车时需刷卡,系统会根据车票费用进行收费。
费用规定如下,共有三种票型:
1. 单次票,费用为 $20$ 比特兰卢布;
2. 90 分钟票,费用为 $50$ 比特兰卢布;
3. 全天票($1440$ 分钟),费用为 $120$ 比特兰卢布。
注意,一张 $x$ 分钟的票从激活时刻 $t$ 开始,可以用于 $t$ 到 $t + x - 1$(含)的所有行程。假设所有行程都恰好持续一分钟。
为了简化乘客选择,系统会自动为每次行程选择最优票型。每当一次新行程开始时,系统会分析之前的所有行程及当前行程,为它们选择一组总费用最小的票型。设覆盖从第一次到当前这次行程的票的最小总费用为 $a$,之前已累计收费总和为 $b$,那么本次系统将收取乘客 $a-b$ 卢布。
请你编写程序,对于给定的行程时刻序列,在每次行程后计算系统实际应收的金额。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示乘客共进行了 $n$ 次行程。
接下来 $n$ 行,每行一个整数 $t_{i}$($0 \leq t_{i} \leq 10^{9}$),表示第 $i$ 次行程的时刻,单位为分钟,按系统启动以来的时间计算。保证所有 $t_i$ 互不相同,且严格递增,即对所有 $1 \leq i < n$,都有 $t_{i+1} > t_i$。
输出格式
输出 $n$ 个整数,第 $i$ 个表示乘客在进行第 $i$ 次行程后此时应被收取的卢布数。
说明/提示
在第一个样例中,系统的处理如下:对于前两次行程,分别买两张单次票更便宜,因此每次收取 $20$ 卢布。在第三次行程后,系统发现买一张 90 分钟票更划算;该票费用为 $50$,而乘客之前已付 $40$,因此本次只需再收取 $10$ 卢布。
由 ChatGPT 5 翻译