酒馆中有m个龙头,可供顾客们接啤酒,每个龙头每秒的出酒量相等,都是1,现有n名顾客准备接酒,他们出示的接酒顺序已经确定。将这些顾客按接酒顺序从1到n编号,i号顾客的接酒量为w_i。接酒开始时,1到m号顾客各占一个酒龙头,并同时打开龙头接酒,当其中某个顾客完成其接酒量要求wj后,下一名排队等候接酒的顾客k马上阶梯顾客的位置开始接酒,这个换人的过程是瞬间完成的,且没有任何酒的浪费,即,顾客第x秒结束时完成接酒,则k顾客第x+1秒立刻开始接酒,若当前接酒人数 n‘ 不足m,则只有n’个龙头供酒,其它m-n‘个龙头关闭,现在给出n名顾客的接酒量,按照上述规则,问所有顾客都接完酒需要的时间是多少秒?
输入描述:
输入包括两行,第一行为以空格分割的两个数n和m,分别表示接酒的人数和酒龙头个数,均为正整数。
第二行n个整数w_i(1<= w_i <=100)表示每个顾客的接酒量。
输出描述:
如果输入合法,输出酒所需总时间(秒)
示例
输入:
5 3
4 4 1 2 1
输出:
4
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main (void)
{
int T=0,i=0,j=0;
int n=0,m=0;
int m_person[105];
int m_bear[10];
int m_time=0;
int max=0;
scanf("%d %d",&n,&m);
m_time=0;
for(i=0; i<n; i++){
scanf("%d", &m_person[i]);
if(max < m_person[i]){
max = m_person[i];
}
}
if(m>=n){
m_time = max;
}
else{
for(i=0;i<m;i++){
m_bear[i] = m_person[i];
}
j = m-1;
while(j < n){ //xiu gai chu
for(i=0; i<m; i++){
m_bear[i]--;
if(!m_bear[i]){
j++;
if(j < n){
m_bear[i] = m_person[j];
}
}
}
m_time++;
}
}
printf("%d\n",m_time);
return 0;
}