死亡
【问题描述】
现在有M个位置可以打 sif,有N +1个人在排队等着打 sif。现在告诉你 个人每个人需要多长的时间打 sif,问你第N +1个人什么时候才能打 sif。 (前N
个人必须按照顺序来)
【输入格式】
第一行两个整数N,M如上所述。
接下来N行每行一个整数代表每个人所需要用的时间。
【输出格式】
一行一个整数表示答案。
【样例输入】
3 2
1
1
1
【样例输出】
1
【样例解释】
山里有座庙。
【数据规模与约定】
对于100%的数据,每个人所需用的时间不超过10 5 。

 #include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cmath>
#include <queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> > a;
int main()
{
freopen("death.in","r",stdin);
freopen("death.out","w",stdout);
int n,i,t,ok=,x=,k;
scanf("%d%d",&n,&k);
for(int i=;i<=k;i++)
a.push();
for(i=; i<n; i++)
{
scanf("%d",&t);
int now=a.top();
a.pop();
now+=t;
a.push(now);
}
/*int maxx=0;
while(!a.empty())
{
maxx=a.top();
a.pop();
} */
cout<<a.top()<<endl;
fclose(stdin);
fclose(stdout);
return ;
}

另附测试数据:

输入:

输出:

测试点一

其余的见网盘

思路:优先队列,打到最后的时候,堆顶的那个人的打完时间即为第N+1个人开始打sif的时间

05-11 11:13