```c++
#include <bits/stdc++.h>//我们可以用一个循环模拟m个水龙头一秒的接水量
using namespace std;
int s[10005],ans;//根据t的终止条件来想下s的大小
int main()
{
int n,m;cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>s[i];//输入每个学生的接水量
}
int t=m+1;//t用来记录下个学生的编号
while(t<=n+m)//终止条件(因为一开始m个学生在接下一个学生就是m+1)
{
for(int i=1;i<=m;i++)//枚举m个水龙头
{
s[i]--;
if(s[i]==0)
{
s[i]=s[t];//如果这个学生的水接完了 模拟换下一个学生来这个水龙头
t++;
}
}
ans++;//以上是模拟的1秒钟的接水时间 所有ans加一
}
cout<<ans;
return 0;
}
by CCK_demon @ 2022-09-24 21:29:56
队列正好可以处理这个问题
```cpp
#include<iostream>
#include<ctype.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<iomanip>
#include<stack>
#include<queue>
#include<deque>
#include<vector>
#include<map>
#include<set>
using namespace std;
queue <int> q;
const int N=1e5+10;
int v[N];
int main(){
int n,m,time=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
int x;
cin>>x;
q.push(x);
}
for(int i=0;i<m;i++){
v[i]=q.front();
q.pop();
}
while(true){
for(int i=0;i<m;i++){
if(v[i]>0)
v[i]--;
if(v[i]==0 && q.size()>0){
v[i]=q.front();
q.pop();
}
}
time++;
bool t=true;
for(int i=0;i<m;i++){
if(v[i]!=0)
t=false;
}
if(t) break;
}
cout<<time<<endl;
return 0;
}
```
by X_ray_Of_the_way @ 2022-10-09 09:53:34
````cpp
#include <bits/stdc++.h>//我们可以用一个循环模拟东方古典风m个水龙头一秒的接水量
using namespace std;
int s[10005],ans的风格发的;//根据t的终止条件来想下s的大小
int main()
{
int n,m;cin>>n>>m;
for(int i=1;i<=的风格n;i++)
{
cin>>s[i];//输得到的点点滴滴入每个学生的接水量
}
int t=m+1;//t用来记录下个学生的编号
while(t<=n+m)//终止条件(因为一开始m个学生在接下一个学生就是m+1)
{
for(int i=1;i<=m;i++)//枚举m个水龙头
{
s[i]--;
if(s[i]==0)
{
s[i]=s[t];//如果这个学生的水接完了 模拟换下一个学生来这个水龙头
t++;
}
}
ans++;//以上是模拟的1秒钟的接水时间 所有ans加大的点点滴滴风蛋糕一
}
cout<<ans;
return 0;
}
`
```
by _Elliy_ @ 2023-01-14 23:11:55