time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard outputYou have r red, g green and b blue balloons. To decorate a single table for the banquet you need exactly three balloons. Three balloons attached to some table shouldn't have the same color. What maximum number t of tables can be decorated if we know number of balloons of each color?
Your task is to write a program that for given values r, g and b will find the maximum number t of tables, that can be decorated in the required manner.
Input
The single line contains three integers r, g and b (0 ≤ r, g, b ≤ 2·109) — the number of red, green and blue baloons respectively. The numbers are separated by exactly one space.
Output
Print a single integer t — the maximum number of tables that can be decorated in the required manner.
Sample test(s)
input
5 4 3
output
4
input
1 1 1
output
1
input
2 3 3
output
2
这题一开始以为是模拟题,模拟了很久发现非常麻烦,后来看了代码,发现只要两个算式就行了。1、如果较小的两个数的和的两倍比第三个数小,那么直接输出这两个数的和,否则输出三个数的平均数。
#include<stdio.h> #include<algorithm> using namespace std; int main() { __int64 a[10]; __int64 n,m,i,j; while(scanf("%I64d%I64d%I64d",&a[0],&a[1],&a[2])!=EOF) { sort(a,a+3); if((a[0]+a[1])*2<=a[2]){ printf("%I64d ",a[0]+a[1]);continue; } else printf("%I64d ",(a[1]+a[2]+a[0])/3); } return 0; }