题目描述
Yisin和兔兔之间经常分享好吃的。这天,他们得到了3堆肥宅快乐水。每堆都包含数量各异的快乐水。因为兔兔不能喝太多的快乐水,这会对胃产生不好的影响。所以Yisin决定给兔兔立下一个规矩:\
- 兔兔可以先从三堆快乐水中选择一堆;\
- 然后Yisin小姐姐从剩下两堆中进行选择一堆;\
- 最后一堆快乐水会按照兔兔的意愿进行分割(比如兔兔拿到了整堆,而Yisin小姐姐一瓶也没有)。
这样子,Yisin和兔兔分别拥有了一些数量的快乐水。但是如果这个时候兔兔拥有的快乐水数目多于Yisin的话,他必须把这部分快乐水丢掉。如果Yisin多的话,她也会这么做。
兔兔想要喝到尽可能多的快乐水。请你帮助他决策如何划分,好吗?
你得独立回答k次询问。对于每次询问,会给出三堆快乐水的数量,你需要回答每次兔兔最多能喝到多少快乐水。
让我们来看下面的示例:[3,4,1],兔兔可以选择第二堆快乐水,Yisin选择第一堆,然后剩下的第三堆里的唯一一瓶快乐水就交给Yisin。这样子两个人都拥有4瓶快乐水。\
输入描述
输入:第一行给出一个整数q (1≤q≤1000),代表q次询问。接下来是q行。
每一行包含三个整数a,b,c (1≤a,b,c≤10^16),代表三堆快乐水的数量。
输出描述
输出:输出q行。第i行对应了第i次询问,给出兔兔最多能喝到的快乐水的数量。
样例输入
4 1 3 4 1 10 100 10000000000000000 10000000000000000 10000000000000000 23 34 45
样例输出
4 55 15000000000000000 51
提示
这是一道思维题,注意开longlong来储存。我们不妨先考虑最极端的情况,再逐渐推最优情况,然后发现,其实最优情况一条式子就能搞定。——by awen
开始觉得写一堆if判断就行了,看到这个提示,想了好久(还是自己太弱)!
其实不管怎么分,想要喝到最多,如果是奇数的话,那就大家都不喝那一瓶,偶数平分就完事了
#include<stdio.h>
int main(){
int q,i;
long long a,b,c;
scanf("%d",&q);
for(i=0;i<q;i++){
scanf("%lld%lld%lld",&a,&b,&c);
printf("%lld\n",(a+b+c)/2);
}
}