sicily--1443. Printer Queue

来源:互联网 发布:机器人软件版权注册 编辑:程序博客网 时间:2024/04/30 15:11

  1. 用优先级队列自动排序找出最高的优先级任务
  2. 只有打印出任务的时候才累加计数器
  3. 若当前打印的是“自己的”,则输出计数器

#include<iostream>#include<queue>#include<vector>using namespace std;struct node{int priority;bool mark;};int main(){int caseNum;cin >> caseNum;while(caseNum--){int jobs;cin >> jobs;int myJob;cin >> myJob;priority_queue<int,vector<int> > sorted;//优先级队列,用以排序queue<node> unsorted;//存储打印机内信息for(int i = 0; i < jobs; i++){node newNode;int priority;cin >> priority;if(i == myJob){newNode.mark = true;//有标记的为“自己”的newNode.priority = priority;}else{newNode.mark = false;newNode.priority = priority;}sorted.push(priority);unsorted.push(newNode);}int count = 0;//时间花费while(!unsorted.empty()){int max = sorted.top();//找出最大的“优先级”node temp = unsorted.front();//排在最前的任务if(temp.priority == max)//轮到该任务{sorted.pop();unsorted.pop();count++;if(temp.mark == true)break;}else{unsorted.pop();unsorted.push(temp);}}cout << count << endl;}return 0;}