题意
www.ncwu.club/problem.php?cid=1051&pid=2
思路
模拟的过程,啦~啦~啦~ 想的到方法就能很快写出来啦。。
code
#include<iostream>
using namespace std;
int n,m;
int T=0;
int a[10005];
int path[10005];
bool check(int k) //检查是否全接完水了
{
for(int i=1;i<=k;i++)
{
if(a[i]!=0)
return true;
}
return false;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
int cnt; //cnt为等待接水的第一个人标号
cnt=m+1;
while(check(m))
{
for(int i=1;i<=m;i++)
{
if(a[i]!=0)
a[i]--; //每次while则接1的水
}
for(int i=1;i<=m;i++)
{
if(a[i]==0 && cnt<=n)
{
a[i]=a[cnt]; //换人接水的过程
cnt++;
}
}
T++;
}
cout<<T<<endl;
return 0;
}
/**************************************************************
Problem: 4537
User: ok_man
Language: C++
Result: Accepted
Time:0 ms
Memory:0 kb
****************************************************************/