Codeforces Round #568 (Div. 2)A

A. Ropewalkers

题目链接:http://codeforces.com/contest/1185/problem/A

题目:

Polycarp decided to relax on his weekend and visited to the performance of famous ropewalkers: Agafon, Boniface and Konrad.

The rope is straight and infinite in both directions. At the beginning of the performance, Agafon, Boniface and Konrad are located in positions a, b and c respectively. At the end of the performance, the distance between each pair of ropewalkers was at least d.

Ropewalkers can walk on the rope. In one second, only one ropewalker can change his position. Every ropewalker can change his position exactly by 1
(i. e. shift by 1 to the left or right direction on the rope). Agafon, Boniface and Konrad can not move at the same time (Only one of them can move at each moment). Ropewalkers can be at the same positions at the same time and can "walk past each other".

You should find the minimum duration (in seconds) of the performance. In other words, find the minimum number of seconds needed so that the distance between each pair of ropewalkers can be greater or equal to d.

Ropewalkers can walk to negative coordinates, due to the rope is infinite to both sides.
Input

The only line of the input contains four integers a, b, c, d (1≤a,b,c,d≤109). It is possible that any two (or all three) ropewalkers are in the same position at the beginning of the performance.
Output

Output

one integer — the minimum duration (in seconds) of the performance.
Examples
Input

5 2 6 3

Output

2

Input

3 1 5 6

Output

8

Input

8 3 3 2

Output
2
Input

2 3 10 4

Output

3

Note

In the first example: in the first two seconds Konrad moves for 2 positions to the right (to the position 8
), while Agafon and Boniface stay at their positions. Thus, the distance between Agafon and Boniface will be |5−2|=3, the distance between Boniface and Konrad will be |2−8|=6 and the distance between Agafon and Konrad will be |5−8|=3. Therefore, all three pairwise distances will be at least d=3, so the performance could be finished within 2 seconds.

题意:

 三个数a,b,c,在一坐标轴上,使得相邻的两个数之差大于等于d,求变换步数。

思路:

先三个数排序,计算相邻两个数的差值和d的差值即可

 

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn=2e5+7;
int main()
{
    int a,b,c,d;
    while(cin>>a>>b>>c>>d)
    {
        int result=0;
        int _max=max(max(a,b),c);
        int _min=min(min(a,b),c);
        int _mid=a+b+c-_max-_min;
        int _1=_mid-_min;
        int _2=_max-_mid;
        if(_1<d)
            result+=(d-_1);
        if(_2<d)
            result+=(d-_2);
        cout<<result<<endl;
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/Vampire6/p/11059490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值