#include <iostream>
#include <vector>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <cstring>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
#include <chrono>
#include <ctime>
#include <cmath>
#include <cctype>
#include <string>
#include <cstdio>
#include <iomanip>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <iterator>
using namespace std;
int a[10] = { 0 };
queue<pair<int, int> > q;
bool IsMax(int pri) {
for (int i = pri + 1; i < 10; ++i) {
if (a[i]) return false;
}
return true;
}
int GetOne() {
pair<int, int> temp;
while (!IsMax(q.front().first))
{
temp = q.front(); q.pop();
q.push(temp);
}
int ret = q.front().second;
a[q.front().first]--;
q.pop();
return ret;
}
int main()
{
pair<int, int> temp;
int T,id,n,t;
cin >> T;
while (T--) {
while (!q.empty()) q.pop();
memset(a, 0, sizeof(a));
cin >> n >> id;
for (int i = 0; i < n; ++i) {
cin >> temp.first;
temp.second = i;
q.push(temp);
a[temp.first]++;
}
int ntime = 1;
while (true) {
t = GetOne();
if(t == id) break;
++ntime;
}
cout << ntime << endl;
}
return 0;
}
习题5-7(uva-12100)
最新推荐文章于 2021-05-18 00:49:13 发布
本文介绍了一个使用队列数据结构来模拟打印任务处理过程的程序。该程序通过优先级判断来决定下一个执行的打印任务,并记录了特定任务完成所需的轮询次数。涉及的关键技术包括 C++ 的标准模板库如队列、对以及数组等。
269

被折叠的 条评论
为什么被折叠?



