题面
思路
用一个队列模拟打印机,用一个优先队列存储当前最大优先级,模拟即可。
代码
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
struct job{
int priority;
bool u;
};
int main(){
int t;
cin>>t;
while(t--){
priority_queue <int> p;//从大到小记录所有任务的优先级
deque<job> q;//用来模拟打印机的队列
int n,x;
cin>>n>>x;
for(int i=0;i<n;i++){//读入数据
job a;
cin>>a.priority;
if(i==x) a.u=true;
else a.u=false;
q.push_back(a);
p.push(a.priority);
}
int count=0;
while(1){
if(q.front().priority==p.top()&&q.front().u){//目标任务出列
count++;
cout<<count<<endl;
break;
}
else if(q.front().priority==p.top()&&!q.front().u){//非目标任务出列
q.pop_front();p.pop();count++;
}
else{//无法出列,移至队尾
q.push_back(q.front());
q.pop_front();
}
}
}
return 0;
}
一直莫名CE最后发现是定义结构体后面忘记加分号