#include <bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
#define mem(shuzu,value) memset(shuzu,value,sizeof shuzu)
using namespace std;
const int M=800000+100;
struct Job{
int xuhao;
int priority;
};
int n,m;
int pri[10];
int getIndex(int nums[]){
for(int i=9;i>0;i--){
if(nums[i]){
return i;
}
}
return 0;
}
int main(){
int t;
//freopen("in.txt","r",stdin);
cin>>t;
while(t--){
mem(pri,0);
cin>>n>>m;
queue<Job>jobs;
for(int i=0;i<n;i++){
Job job;
cin>>job.priority;
pri[job.priority]++;
job.xuhao=i;
jobs.push(job);
}
int time=0;
while(!jobs.empty()){
Job jj=jobs.front();
jobs.pop();
//cout<<"jj.priority"<<jj.priority<<";;getIndex(pri):"<<getIndex(pri)<<endl;
if(jj.xuhao==m&&jj.priority==getIndex(pri)){
cout<<time+1<<endl;
break;
}else if(jj.priority!=getIndex(pri)){
jobs.push(jj);
}else if(jj.priority==getIndex(pri)){
pri[jj.priority]--;
time++;
}
}
}
}
UVA12100 Printer Queue
最新推荐文章于 2025-07-29 22:18:07 发布
本文介绍了一个使用优先级队列来模拟打印机任务调度的C++程序。该程序定义了一个结构体用于存储任务的优先级,并通过队列来管理这些任务。通过不断检查当前任务的优先级是否为当前最高优先级,决定是否执行该任务或重新将其放回队列。文章通过一个具体的例子展示了如何使用此程序来找出特定任务的完成时间。
443

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



