1 /* 2 贪心:排序后,当a[3] > 2 * (a[1] + a[2]), 可以最多的2个,其他的都是1个,ggr,ggb, ggr。。。 ans = a[1] + a[2]; 3 或先2个+1个,然后k个rgb。。。r = x + k; g = 2 * (x + z) + k; b = z + k; ans = (x + z) + k = (a[1] + a[2] + a[3]) / 3; 4 隔了一段时间有做到这题又不会了,看别人的解题报告水平果然没有提升,以后做题要独立思考,看别人的也要完全理解并记住! 5 */ 6 #include7 #include 8 #include 9 #include 10 using namespace std;11 12 typedef long long ll;13 const int MAXN = 1e3 + 10;14 const int INF = 0x3f3f3f3f;15 16 int main(void) //Codeforces Round #273 (Div. 2) C. Table Decorations17 {18 // freopen ("C.in", "r", stdin);19 20 ll a[4];21 while (scanf ("%I64d%I64d%I64d", &a[1], &a[2], &a[3]) == 3)22 {23 sort (a+1, a+1+3);24 printf ("%I64d\n", min ((a[1] + a[2] + a[3]) / 3, a[1] + a[2]));25 }26 27 return 0;28 }