タイトル:スウィート問題
質問の意味:赤、緑、青ます。Doあなたはキャンディの3つの山持っている
R、G、Bのお菓子と第3の反応器は、キャンディと第二反応器があるお菓子の山での
キャンディの2つの異なる色の毎日に食べることができるが、見つけるためにあなたがお菓子を食べることができる日の最大数
分析:下位の最初の行、または以外の場合は、最大ヒープ杭に等しくして、別の二つのスタックに応答し、他の2つのスタックよりも小さく、第1の最大スタックを排除する場合に、さらに評価杭を排除することができキャンディから、
日の最大数を取得しようとするので、あなたが2つの山同じ2つの山に共有したいので、お互い残りの二つの山を排除しても続きます。
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int a[3];
int t;
int main()
{
cin >> t;
while (t--)
{
cin >> a[0] >> a[1] >> a[2];
sort(a, a + 3);
if (a[2] >= a[0] + a[1])
printf("%d\n", a[0] + a[1]);
else
{
//a[2] < a[0] + a[1]
int res = 0;
res += a[2];
int t = (a[0] + a[1] - a[2]) / 2;
res += t;
printf("%d\n", res);
}
}
return 0;
}