C. Bus
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

A bus moves along the coordinate line Ox from the point x = 0 to the point x = a. After starting from the point x = 0, it reaches the point x = a, immediately turns back and then moves to the point x = 0. After returning to the point x = 0 it immediately goes back to the point x = a and so on. Thus, the bus moves from x = 0 to x = a and back. Moving from the point x = 0 to x = a or from the point x = a to x = 0 is called a bus journey. In total, the bus must make k journeys.

The petrol tank of the bus can hold b liters of gasoline. To pass a single unit of distance the bus needs to spend exactly one liter of gasoline. The bus starts its first journey with a full petrol tank.

There is a gas station in point x = f. This point is between points x = 0 and x = a. There are no other gas stations on the bus route. While passing by a gas station in either direction the bus can stop and completely refuel its tank. Thus, after stopping to refuel the tank will contain b liters of gasoline.

What is the minimum number of times the bus needs to refuel at the point x = f to make k journeys? The first journey starts in the point x = 0.

Input

The first line contains four integers a, b, f, k (0 < f < a ≤ 106, 1 ≤ b ≤ 109, 1 ≤ k ≤ 104) — the endpoint of the first bus journey, the capacity of the fuel tank of the bus, the point where the gas station is located, and the required number of journeys.

Output

Print the minimum number of times the bus needs to refuel to make k journeys. If it is impossible for the bus to make k journeys, print -1.

Examples
Input
6 9 2 4
Output
4
Input
6 10 2 4
Output
2
Input
6 5 4 3
Output
-1
Note

In the first example the bus needs to refuel during each journey.

In the second example the bus can pass 10 units of distance without refueling. So the bus makes the whole first journey, passes 4 units of the distance of the second journey and arrives at the point with the gas station. Then it can refuel its tank, finish the second journey and pass 2 units of distance from the third journey. In this case, it will again arrive at the point with the gas station. Further, he can refill the tank up to 10 liters to finish the third journey and ride all the way of the fourth journey. At the end of the journey the tank will be empty.

In the third example the bus can not make all 3 journeys because if it refuels during the second journey, the tanks will contain only 5 liters of gasoline, but the bus needs to pass 8 units of distance until next refueling.

题意:一辆公交车在一段路上往返跑,往或返都算一次journey,路上有一个加油站f,能否完成k次journey。

  思路当然是模拟了,一开始我想到的是记录往或着返的时候   油(此处用now代替)是否是够的。假举了多种情况没有找到合适的标准来计算次数。然后又重新以是否需要加油为标准判断次数。     赛后补题发现,我开始的思路不算错,只记录x=0,和x=a的now来进行模拟。并且判断是否是最后一次旅途就可以解出。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 100010
using namespace std;
int main()
{
int a,b,f,k;
while(~scanf("%d%d%d%d",&a,&b,&f,&k))
{
int d=0,ans=0;
int now;
now=b-f;
int to=1;
for(int i=0;i<k&&now>=0;i++){
if(to){
if(i==k-1){
if(now<a-f){
now=b-(a-f);
ans++;
}
}
else if(now>=2*(a-f)){
now-=2*(a-f);
}
else {
now=b-2*(a-f);
ans++;
}
to=0;
}
else{
if(i==k-1){
if(now<f){
now=b-f;
ans++;
}
}
else if(now>=2*f){
now-=2*f;
}
else{
now=b-2*f;
ans++;
}
to=1;
}
}
if(now<0){
puts("-1");
}
else{
printf("%d\n",ans);
} }
}

  

CodeForces_864_bus的更多相关文章

随机推荐

  1. http学习总结及思考

    针对前面几章的学习,加上在学长的指导下,希望对前面知识进行简单总结. 1.在报文的7个方法中,最常用的是:Head和Post 响应头:If-Modified-Since HEAD -> 服务器返 ...

  2. stm32 定时器初步

    今天学习STM32 的通用定时器:TIMx (TIM2.TIM3.TIM4 和 TIM5). 定时器比较复杂,功能繁多,这里我们就说最基本的计数功能. 1.定时器的时钟从哪里来? 定时器的时钟来源有 ...

  3. 前端如何做好SEO优化

    https://www.cnblogs.com/weiyf/p/9511021.html 一:什么是SEO? 搜索引擎优化(Search Engine Optimization),简称SEO.是按照搜 ...

  4. WebService的搭建,部署,简单应用和实体类结合使用

    WebService:一种跨编程语言和操作系统平台的远程调用技术,SOAP.WSDL(WebServicesDescriptionLanguage).UDDI(UniversalDescription ...

  5. Java入门之Tomcat运行

    在上一篇<Java入门之Tomcat安装及环境变量配置>中提到,启动Tomcat要保持CMD下执行startup.bat的界面不关闭,才能访问Tomcat. 这是因为只有保持startup ...

  6. MySQL查询上个月数据

    SELECT * FROM order o WHERE o.payTime BETWEEN DATE_FORMAT(DATE_ADD(NOW(),INTERVAL MONTH),'%Y-%m-01') ...

  7. Cookie概述

    一.什么叫Cookie? Cookie翻译成中文是小甜点,小饼干,在Http中它表示服务器送给客户端浏览器的小甜点.其实Cookie就是一个键和一个值构成,随着服务器端的响应发送给客户端浏览器,然后客 ...

  8. Django Rest Framework框架源码流程

    在详细说django-rest-framework源码流程之前,先要知道什么是RESTFUL.REST API . RESTFUL是所有Web应用都应该遵守的架构设计指导原则. REST是Repres ...

  9. python面试题——爬虫相关

    1.接触过几种爬虫模块 urllib.requests这两种爬虫模块. 2.robots协议是什么? 它就是一个防君子不防小人的协议,网站有一些数据不想被爬虫程序爬取,可以编写robots协议文件,明 ...

  10. easyui datagrid 表格中操作栏 按钮图标不显示

    jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染 解决办法: 使用解析器 Parser(解析器) $.parser.parse();       // 解析所有页面 $.par ...