CodeForces 732 C.Sanatorium(水~)

来源:互联网 发布:网络黄金王晨芳照片 编辑:程序博客网 时间:2024/06/10 03:50

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 1111ll 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;}
0 0