Sicily 1443. Printer Queue

来源:互联网 发布:cms? 编辑:程序博客网 时间:2024/05/16 05:02

题目地址:http://soj.me/1443

这是一道有关队列的题目,要模拟操作很简单,但是job的优先级可能相同,最后一个用例:1 1 9 1 1,第一个优先级为1的才是要求的job,然后我用了一个结构体来标记那个job,在模拟过程:

#include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;struct job {  int priority;  bool is_my_job;  job(int priority_, bool is_my_job_) : priority(priority_), is_my_job(is_my_job_) {}};int main() {  int N;  cin >> N;  while (N--) {    int num, position;    queue<job> que;    cin >> num >> position;    vector<int> vt;    for (int i = 0; i < num; i++) {      int p;      cin >> p;      vt.push_back(p);      bool is_my_job = false;      if (i == position)        is_my_job = true;      que.push(job(p, is_my_job));    }    sort(vt.begin(), vt.end());    int count_ = 0;    while (1) {      job temp = que.front();      if (temp.priority < *(vt.end()-1)) {        que.pop();        que.push(temp);      } else {        que.pop();        vt.erase(vt.end()-1);        count_++;        if (temp.is_my_job)          break;      }    }    cout << count_ << endl;  }  return 0;}


0 0
原创粉丝点击