巷道是长度为 L 的闭区间 [0,L]。穿梭车碰到端点立刻掉头,等价于在区间上往复折返。行程 ai 最大为 1012,不能逐步模拟每一单位距离,必须对每条指令 O(1) 求出碰撞次数、落点和朝向。
先处理初始朝向:若在 0 且朝左,或在 L 且朝右,开始前已经完成一次掉头,该次不计入答案,把朝向改成朝内即可。之后每条指令都从「朝内或位于内部」的状态出发。
对当前点 p、朝向 d 与行程 x:
质检员小柯在城南自动化立库核对巷道穿梭车的行程日志。巷道是一条长度为 L 的直线导轨,穿梭车抵达 0 端或 L 端时,限位器会立刻使其掉头。
已知穿梭车的初始位置 s 与初始朝向 d,随后依次执行 n 条调度指令。每条指令要求沿当前朝向行驶距离 ai,途中允许反复撞限位并掉头。请根据日志计算限位触发总次数、最终位置与最终朝向。
若初始时 s=0 且 d=L,则视为执行第一条指令前已完成掉头,初始朝向按 R 处理;若初始时 s=L 且 d=R,则初始朝向按 L 处理。该初始修正不计入触发次数,仅在执行指令的行驶过程中抵达端点时计一次。
第一行输入四个整数 n(1≤n≤2×105)、L(1≤L≤109)、s(0≤s≤L),以及朝向字符 d∈{L,R}。
第二行输入 n 个非负整数 ai(0≤ai≤1012)。
输出限位触发总次数、最终位置与最终朝向。
输入
4 8 2 L
3 6 10 4
输出
3 5 R
说明
初始位置为 2,朝向为 L,巷道长 8。
因此输出 3 5 R。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册