Codeforces Round #468 A. Friends Meeting

A. Friends Meeting

Two friends are on the coordinate axis Ox in points with integer coordinates. One of them is in the point x1 = a, another one is in the point x2 = b.

Each of the friends can move by one along the line in any direction unlimited number of times. When a friend moves, the tiredness of a friend changes according to the following rules: the first move increases the tiredness by 1, the second move increases the tiredness by 2, the third — by 3 and so on. For example, if a friend moves first to the left, then to the right (returning to the same point), and then again to the left his tiredness becomes equal to 1 + 2 + 3 = 6.

The friends want to meet in a integer point. Determine the minimum total tiredness they should gain, if they meet in the same point.

Input

The first line contains a single integer a (1 ≤ a ≤ 1000) — the initial position of the first friend.

The second line contains a single integer b (1 ≤ b ≤ 1000) — the initial position of the second friend.

It is guaranteed that a ≠ b.

Output

Print the minimum possible total tiredness if the friends meet in the same point.

Examples
input
Copy
3
4
output
1
input
Copy
101
99
output
2
input
Copy
5
10
output
9

题意:给你两个数ab,表示两个朋友的位置,现在这两个人要见面,第k次移动时,花费就是k,而且两人花费叠加,问你两人见面的最小花费。

思路:ab求绝对值,得到两人间距,然后除以二,表示两人都往中间跑,前n项和算一半距离,然后乘2就可以了,注意间距是奇数偶数时的特判处理。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b,flag;
int main()
{
    while(~scanf("%lld%lld",&a,&b))
    {
        ll tmp=abs(a-b);
        flag=0;
        if(tmp%2!=0)flag=1;
        tmp/=2;
        ll ans=((1+tmp)*tmp)/2;
        ans*=2;
        if(flag==1)ans+=tmp+1;   //如果是奇数,那么需要一个人在多走一步,当然要取步数小的那个人
        printf("%lld\n",ans);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值