您的位置:首页 > 大数据 > 人工智能

Argus OpenJ_Bailian - 2051

2017-10-25 11:03 127 查看
题目: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 long

struct 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stl 优先队列