防止大佬们看不懂特意加了注释
#include<iostream>
#include<cstdio>
using namespace std;
long long a[10001],b[10001];
long long n,m,s=0,flag;
int main()
{
//freopen("water.in","r",stdin);
//freopen("water.out","w",stdout);
cin>>n>>m;
int start=1;
for(int i=1;i<=n;i++)cin>>a[i];
if(n<=m)//水龙头比人多
{
int max=-1;
for(int i=1;i<=n;i++)if(a[i]>max)max=a[i];//算出时间最大者
cout<<max<<endl;
return 0;
}
else
{
while(1)
{
int g=0;//人数初始为0
flag=0;
for(int i=start;i<=n;i++)
{
if(i==start&&b[i]==1)start++;//不知道怎么解释QAQ
if(b[i]==0)//如果需要接
{
a[i]--;//接水量--
g++;//接水人数++
}
else continue;
if(a[i]==0)b[i]=1;//接完了
if(g==m)break;//g为水龙头数,当水龙头数满时终止循环
}
s++;//秒数++
for(int i=start;i<=n;i++)if(b[i]==0)flag=1;//还有没接完的
if(flag==0)break;//全都接完
}
cout<<s<<endl;
return 0;
}
}
最后一个点TLE,改了好几次了,实在是不会优化QAQ 大佬们救救蒟蒻吧~~~~(>_<)~~~~