智商题。。
正确答案就是三个数之和sum/3,和较小的两个数之和比较,取小的那个。
因为唯一不合法情况就是三个气球取一种颜色,设sum/3=k,把这些气球分成k组。
如果会出现不合法情况,那一定就是有一种气球数量远远超过其他两种气球数,此时最极端分法就是在那两种数量少的气球中取一个,再在数量多的气球中取两个。
如果这样都分不完,那么只有那两种数量少的气球的和个桌子可以装饰,此时a[1]+a[2]<sum/3
变量都要用long long
所以代码就是:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define LL long long
LL a[4];
int main(){
scanf("%I64d%I64d%I64d",&a[1],&a[2],&a[3]);
LL sum=a[1]+a[2]+a[3];
LL res=sum/3;
sort(a+1,a+4);
LL k=a[1]+a[2];
res=min(res,k);
printf("%I64d",res);
return 0;
}