Argus OpenJ_Bailian

来源:互联网 发布:淘宝网童装男童 编辑:程序博客网 时间:2024/05/29 12:54

题目:https://vjudge.net/problem/OpenJ_Bailian-2051

题目大意

有n个询问,每个询问有一个序号和一个时间,问你这n个询问同时开始,输出它们的结束顺序,如果同时结束,按序号升序输出。

分析

很明显是练习STL的一道题,胆大心细优先队列可过。

代码

/********************************************************************* File Name: Argus_cpp* Author: Sequin* mail: Catherine199787@outlook.com* Created Time: 二  9/ 5 18:45:19 2017*************************************************************************/#include <iostream>#include <algorithm>#include <queue>using namespace std;#define ll long longstruct node {    ll num;    ll period;    ll time;    bool operator < (const node &a) const{        if(a.time == time) {            return a.num < num;        }        return a.time < time;    }};priority_queue <node> pq;int main() {    string s;    node t;    while(cin >> s && s != "#") {        cin >> t.num  >> t.time;        t.period = t.time;        pq.push(t);    }    int k;    cin >> k;    for(int i = 0; i < k; i++) {        node now;        now = pq.top();        cout << now.num << endl;        pq.pop();        now.time += now.period;    //    cout << now.time << endl;        pq.push(now);    }    return 0;}
原创粉丝点击