#YC186. 公交车加油问题

公交车加油问题

公交车加油问题

题目描述

一辆公交车在坐标轴Ox上行驶,从点x=0x=0出发到达x=ax=a后立即折返,不断循环完成单程行驶。每个单程定义为:

  • x=0x=0x=ax=a
  • 或从x=ax=0x=a到x=0

公交车需要完成kk个单程行驶。油箱容量为bb升,每行驶1单位距离消耗1升汽油。初始时油箱是满的。

x=fx=f的位置(0<f<a)处有一个加油站。公交车每次经过该点时​(无论是去程还是返程)可以停下加油,加油后油箱立即充满。求完成k个单程所需的最少加油次数,若无法完成则输出-1。


输入格式

输入四个整数:
a b f k

  • a:终点坐标(0 < f < a ≤ 10⁶)
  • b:油箱容量(1 ≤ b ≤ 10⁹)
  • f:加油站坐标
  • k:需要完成的单程次数(1 ≤ k ≤ 10⁴)

输出格式

一个整数表示最少加油次数,若无法完成则输出-1。


示例

6 9 2 4
4
6 10 2 4
2
6 5 4 3
-1

解释

在第一个例子中,公交车每次行驶都需要加油。 而在第二个示例中,巴士无需加油就能行驶 10 个单位的路程。因此,公交车走完全程后,经过第二段路程的 4 个单位,然后到达设有加油站的地点。然后,它可以给油箱加油,完成第二段路程,并通过第三段路程的 2 个单位。在这种情况下,它将再次到达设有加油站的地点。此外,他还可以将油箱加油至 10 升,以完成第三个旅程,并一直骑到第四个旅程。旅程结束时,油箱将是空的。

在第三个例子中,公共汽车无法完成 3 个行程,因为如果在第二个行程中加油,油箱中的汽油将只有 5 升,但公共汽车需要经过 8 个单位的路程才能进行下一次加油。