关闭

死亡

50人阅读 评论(0) 收藏 举报
分类:
【问题描述】
现在有个位置可以打sif,有个人在排队等着打sif。现在告诉你前个人每个人需要多长的时间打sif,问你第个人什么时候才能打sif。(前个人必须按照顺序来)
【输入格式】
第一行两个整数如上所述。
接下来行每行一个整数代表每个人所需要用的时间。
【输出格式】
一行一个整数表示答案。
【样例输入】
3 2
1
1
1
【样例输出】
1
【样例解释】
山里有座庙。
【数据规模与约定】
对于的数据,每个人所需用的时间不超过。1E5
0=<N<=100000,0=<M<=50000.

每个人进来时用优先队列找最小元素,然后与新元素合并加入优先队列即可

#include <cstdio>
#include <queue>
using namespace std;
priority_queue <int> dl;
int main()
{
    //freopen("death.in","r",stdin);
    //freopen("death.out","w",stdout); 
    int m,n;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        int x;
        scanf("%d",&x); 
        if(i<=m)
        dl.push(-x);
        else
        {
            int tmp=-dl.top()+x;
            dl.pop();
            dl.push(-tmp);
        }
    }
    printf("%d",-dl.top());
    return 0; 
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22492次
    • 积分:2722
    • 等级:
    • 排名:第13078名
    • 原创:251篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    友链