题意 : n支队伍,每场两个队伍表演,有可能两个队伍都得一分,也可能其中一个队伍一分,也可能都是0分,每个队伍将参加的场次得到的分数加起来,给你每个队伍最终得分,让你计算至少表演了几场。
思路 : ans = max(maxx,(sum+1)/2) ;其实想想就可以,如果所有得分中最大值没有和的一半大,那就是队伍中一半一半对打,否则的话最大的那个就都包了。
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <iostream> using namespace std ; int a[] ; int main()
{
int n ,maxx,sum ;
int T ,casee = ;
//freopen("1004.in","r",stdin) ;
scanf("%d",&T) ;
while(T --)
{
scanf("%d",&n) ;
maxx = - ;sum = ;
for(int i = ; i < n ; i++)
{
scanf("%d",&a[i]) ;
maxx = max(a[i],maxx) ;
sum += a[i] ;
}
printf("Case #%d: %d\n",casee++ ,max(maxx,(sum + )/ )) ;
}
return ;
}