PTAWindows訊息佇列c++版——山東科技大學
題目:
訊息佇列是Windows系統的基礎。對於每個程式,系統維護一個訊息佇列。如果在程式中有特定事件發生,如點選滑鼠、文字改變等,系統將把這個訊息加到佇列當中。同時,如果佇列不是空的,這一程式迴圈地從佇列中按照優先順序獲取訊息。請注意優先順序值低意味著優先順序高。請編輯程式模擬訊息佇列,將訊息加到佇列中以及從佇列中獲取訊息。
輸入格式:
輸入首先給出正整數N(≤1e5),隨後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!
卡時間,要用scanf讀,用string儲存cin讀的話會超時。
#include<bits/stdc++.h>
using namespace std;
int n;
char ss[100005][11],s[11];
priority_queue <int,vector<int>,greater<int> > q;
int main()
{
cin>>n;
int a;
for(int i=0; i<n; i++)
{
scanf("%s",&s);
if(s[0]=='G')
{
if(!q.empty())
{
cout<<ss[q.top()]<<endl;
q.pop();
}
else
cout<<"EMPTY QUEUE!"<<endl;
}
else if(s[0]=='P')
{
scanf("%s%d",&s,&a);
q.push(a);
strcpy(ss[a],s);
}
}
}
ps:程式碼僅供參考,請勿抄襲
相關文章
- 訊息佇列系列一:訊息佇列應用佇列
- 訊息佇列佇列
- 訊息佇列(MQ)佇列MQ
- Kafka訊息佇列Kafka佇列
- RabbitMQ訊息佇列MQ佇列
- kafka 訊息佇列Kafka佇列
- POSIX訊息佇列佇列
- 訊息佇列(一)佇列
- 訊息佇列(二)佇列
- 訊息佇列二佇列
- [Redis]訊息佇列Redis佇列
- [訊息佇列]rocketMQ佇列MQ
- [訊息佇列]RabbitMQ佇列MQ
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- 全面理解Handler-1:理解訊息佇列,手寫訊息佇列佇列
- C++ 多執行緒框架(3):訊息佇列C++執行緒框架佇列
- MQ訊息佇列_RabbitMQMQ佇列
- Java面試—訊息佇列Java面試佇列
- 訊息佇列雜談佇列
- 訊息佇列二三事佇列
- rabbitmq訊息佇列原理MQ佇列
- 訊息佇列設計佇列
- 訊息佇列簡史佇列
- 訊息佇列之RabbitMQ佇列MQ
- 訊息佇列之RocketMQ佇列MQ
- 理解訊息佇列(MQ)佇列MQ
- 訊息佇列之 RabbitMQ佇列MQ
- 訊息佇列之 Kafka佇列Kafka
- 訊息佇列之 ActiveMQ佇列MQ
- 訊息佇列深入解析佇列
- 訊息佇列之 RocketMQ佇列MQ
- 分散式訊息佇列分散式佇列
- RabbitMQ 訊息佇列 配置MQ佇列
- 淺談訊息佇列佇列
- 程式間通訊--訊息佇列佇列
- 訊息機制篇——初識訊息與訊息佇列佇列
- RabbitMQ訊息佇列(五):Routing 訊息路由MQ佇列路由
- 知識分享--訊息佇列佇列