题目:https://vjudge.net/problem/UVA-12100
思路:用deque模拟比较方便,不会重载运算符的我只好写个函数判断优先级了。
代码:
#include <iostream>
#include <string>
#include <cstdio>
#include <iomanip>
#include <map>
#include <set>
#include <vector>
#include <deque>
#include <cstring>
#include <algorithm>
using namespace std;
deque<pair<int, int> > data;//priority, order number
int time;
bool isprior()
{
for(int i=1; i<data.size(); i++)
{
if(data[i].first>data[0].first)
{
return false;
}
}
return true;
}
int main()
{
int T;
cin >> T;
while(T--)
{
time = 0;
data.clear();
int n, num;
cin >> n >> num;
for(int i=0; i<n; i++)
{
int priority;
cin >> priority;
data.push_back(make_pair(priority, i));
}
while(1)
{
if(isprior())
{
if(data[0].second==num)
{
time++;
break;
}
else
{
data.pop_front();
time++;
}
}
else
{
data.push_back(data[0]);
data.pop_front();
}
}
cout << time << endl;
}
return 0;
}