本文共 2421 字,大约阅读时间需要 8 分钟。
看病要排队这个是地球人都知道的常识。
输入数据包含多组测试,请处理到文件结束。
对于每个"OUT A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。
7
2
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using std::cin;11 using std::cout;12 using std::endl;13 using std::find;14 using std::sort;15 using std::set;16 using std::map;17 using std::pair;18 using std::vector;19 using std::multiset;20 using std::multimap;21 using std::priority_queue;22 #define pb(e) push_back(e)23 #define sz(c) (int)(c).size()24 #define mp(a, b) make_pair(a, b)25 #define all(c) (c).begin(), (c).end()26 #define iter(c) decltype((c).begin())27 #define cls(arr,val) memset(arr,val,sizeof(arr))28 #define cpresent(c, e) (find(all(c), (e)) != (c).end())29 #define rep(i, n) for (int i = 0; i < (int)(n); i++)30 #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i)31 const int Max_N = 100010;32 typedef unsigned long long ull;33 struct Node {34 int id, f;35 Node(int i = 0, int j = 0) :id(i), f(j) {}36 friend bool operator<(const Node &a, const Node &b) {37 return a.f == b.f ? a.id > b.id : a.f < b.f;38 }39 };40 priority_queue que[3];41 int main() {42 #ifdef LOCAL43 freopen("in.txt", "r", stdin);44 freopen("out.txt", "w+", stdout);45 #endif46 char buf[10];47 int n, a, b, k;48 while (~scanf("%d", &n)) {49 k = 1;50 rep(i, n) {51 scanf("%s", buf);52 if (buf[0] == 'I') {53 scanf("%d %d", &a, &b);54 que[a - 1].push(Node(k++, b));55 } else {56 scanf("%d", &a);57 if (que[a - 1].empty()) { puts("EMPTY"); continue; }58 printf("%d\n", que[a - 1].top().id); que[a - 1].pop();59 }60 }61 rep(i, 3) {62 while (!que[i].empty()) que[i].pop();63 }64 }65 return 0;66 }
转载于:https://www.cnblogs.com/GadyPu/p/4604345.html