大师 • 3个月前
// C++ code // Type anything you want and press Tab to accept auto-complete suggestions
using namespace std;
int s[11000], ans; // 创建一个数组s来存储每个同学的接水量,ans变量用来存储总时间。
int main() {
int n, m; // n为学生人数,m为水龙头数量
cin >> n >> m; // 从输入读取n和m的值
for (int i = 1; i <= n; i++) { // 从输入读取每个学生的接水量
cin >> s[i];
}
int t = m + 1; // t初始为m + 1,表示下一个将要接水的同学的索引,从m + 1开始,因为前m个同学已经在接水。
// 当t小于等于n + m时,继续循环。由于实际上,当所有的同学都接完水时,这个条件会使得循环结束。
while (t <= n + m) {
for (int i = 1; i <= m; i++) { // 遍历已经在接水的学生
s[i]--; // 每个正在接水的同学的接水量减少1(因为每秒每个龙头供水1单位)
if (s[i] == 0) { // 如果该同学的接水量已经完成
s[i] = s[t]; // 让这个龙头接管t位置同学的接水量
t++; // 移动到下一个排队的同学
}
}
ans++; // 每完成一轮水龙头的工作,即记录时间增加1秒
}
cout << ans; // 输出总用水时间
return 0; // 程序结束
}
评论:
请先登录,才能进行评论