T4.
有两种情况。 一种情况是所有店铺剩余的食物刚好可以满足时间分配,也就是每一分钟都在吃东西,没有时间的浪费,如3,2,2,一共需要sum = 3+2+2=7分钟; 另外一种情况是,其中有家店铺所剩余的食物大于了其他店铺剩余食物的总和,所以无法满足完美的时间分配。当只剩下这家店铺的时候,只能休息。sum = max*2 -1。也可以理解为,在休息的时候,可以吃其他店铺的食物,但是这家店铺所剩余的食物太多了,导致只能休息。
#include<iostream>
#include<cstdio>
using namespace std;
int n,a;
int main()
{
scanf("%d", &n);
int sum =0, Max = 0;
while(n --)
{
scanf("%d", &a);
sum += a;
Max = max(Max, a);
}
printf("%d", max(Max*2-1, sum));
return 0;
}