#SIM304. 地铁换乘指令

SIM304 地铁换乘指令

难度梯度:T3|训练重点:状态机与动态开销

题目描述

乘客从线路 1 的站点 1 出发,交通卡余额为 B。共有 M 条线路,线路 i 有 len_i 个站点。执行 Q 条指令:MOVE k 在当前线路沿站点编号增加 k,若越过末站或余额不足 k 元则失败;成功时收费 k 元;SWITCH line station fee 尝试换乘到给定线路和站点,若线路、站点合法且余额不少于 fee 则扣费并切换,否则失败;TOPUP x 充值 x 元总成功。失败时状态不变。每条输出 OK/FAIL、当前线路、站点、余额。

MOVE k 中 k 可以为 0;换乘可以选择当前线路。每条指令独立执行,下一条指令使用上一条完成后的状态。余额不足时 MOVE 和 SWITCH 均失败。

输入格式

第一行 M Q B。第二行 M 个 len_i。随后 Q 行操作。保证 MOVE 的 k、TOPUP 的 x、SWITCH 的 fee 均为非负整数。

输出格式

每条输出 OK line station balance 或 FAIL line station balance。

样例输入

2 5 5
4 3
MOVE 2
SWITCH 2 2 2
MOVE 2
TOPUP 4
MOVE 1

样例输出

OK 1 3 3
OK 2 2 1
FAIL 2 2 1
OK 2 2 5
OK 2 3 4

样例说明

换乘后在 2 号线第 2 站;下一次 MOVE 越过第 3 站,失败。

数据范围

1≤M,Q≤2×10^5;1≤len_i≤10^9;0≤B,k,x,fee≤10^9;保证余额不超过 9×10^18。

子任务

20 分:Q≤100;30 分:无 SWITCH;50 分:无附加限制。


Problem Info

#SIM304. 地铁换乘指令

ID 10336
类型 传统题
时间 1000ms
内存 256MiB
尝试 0 已通过 0
难度 (无)
上传者
标签
模拟状态维护T3