Description
一个人出去出差,给出出差期间早餐午餐晚餐数量,问最少差了几顿餐
Input
三个整数a,b,c分别表示早中晚三餐数量(0<=a,b,c<=1e18,a+b+c>=1)
Output
输出最少差的餐数
Sample Input
3 2 1
Sample Output
1
Solution
简单题,分若干情况讨论即可,一顿多了先扔一个到前面作为起点然后补齐,两顿多了把多的较多的放在前面作为起点然后补齐
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define maxn 1111
ll a,b,c;
int main()
{
while(~scanf("%I64d%I64d%I64d",&a,&b,&c))
{
ll t=min(a,min(b,c)),ans;
a-=t,b-=t,c-=t;
if(a>b)swap(a,b);
if(b>c)swap(b,c);
if(a>b)swap(a,b);
if(c==0)ans=0;
else if(b==0)ans=2ll*(c-1);
else
{
if(b==c)ans=b-1;
else ans=c-1-b+c-1;
}
printf("%I64d\n",ans);
}
return 0;
}