公司微信网站建设方案模板下载,商标自动生成免费软件,安徽建站优化,门户网站建设所需条件一#xff1a;题目
消息队列是Windows系统的基础。对于每个进程#xff0c;系统维护一个消息队列。如果在进程中有特定事件发生#xff0c;如点击鼠标、文字改变等#xff0c;系统将把这个消息加到队列当中。同时#xff0c;如果队列不是空的#xff0c;这一进程循环地从…一题目
消息队列是Windows系统的基础。对于每个进程系统维护一个消息队列。如果在进程中有特定事件发生如点击鼠标、文字改变等系统将把这个消息加到队列当中。同时如果队列不是空的这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列将消息加到队列中以及从队列中获取消息。
输入格式: 输入首先给出正整数N≤10 5 随后N行每行给出一个指令——GET或PUT分别表示从队列中取出消息或将消息添加到队列中。如果指令是PUT后面就有一个消息名称、以及一个正整数表示消息的优先级此数越小表示优先级越高。消息名称是长度不超过10个字符且不含空格的字符串题目保证队列中消息的优先级无重复且输入至少有一个GET。
输出格式: 对于每个GET指令在一行中输出消息队列中优先级最高的消息的名称和参数。如果消息队列中没有消息输出EMPTY QUEUE!。对于PUT指令则没有输出。
输入样例: 9 PUT msg1 5 PUT msg2 4 GET PUT msg3 2 PUT msg4 4 GET GET GET GET 输出样例: msg2 msg3 msg4 msg1 EMPTY QUEUE!
二思路
用到了map 容器 那就简单了map有自动排序功能这样的话每次遇到GET 就将 第一个输出来同时将第一个删除。
如果map容器不熟练请看链接
https://blog.csdn.net/qq_48508278/article/details/118531197
三上码
#includebits/stdc.h
using namespace std;int main()
{mapint,stringm;mapint,string:: iterator t;//迭代器的使用 用于遍历int N;cin N;for( int i 0; i N; i ){string str;cin str;if( str PUT){string str1;int num;cin str1 num;m[num] str1;}if( str GET){if( t ! m.end() !m.empty()){t m.begin();//指向map容器当中第一对元素cout t-second endl;t m.find(t-first);m.erase(t);}else if(m.empty()){cout EMPTY QUEUE! endl;}}}} 三超时问题
以往做题经验 1多提交几次卡时间有可能会卡过去 2将 cout 输出改为 printf输出 3: 将 cin 输入改为 sacnf输入
补充如果还不行 那说明得回炉重造了 本题是多提交几次卡过去了。
加油陌生人