#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 分:无附加限制。