sort函数
自定义排序方法
bool cmp(int a, int b) {
return a > b; // 降序排序
}
sort(vec.begin(), vec.end(), cmp); // 对vec进行降序排序
指定下标排序
sort(arr, arr + num_elements);
队员编号(队列映射)
#include<cstdio>
#include<queue>
#include<map>
using namespace std;
queue<int>q,q2[1010];//q记录排队的团队编号,q2下标团队号,值为队员编号
int main(void){
int t,kase=0;//t为团队数,kase为处理的长队列方案数
while(scanf("%d",&t)==1&&t){
printf("Scenario #%d",++kase);
}
map<int,int>team;//下标编号,值为团队号
for(int i=0;i<t;i++){
int n,x;
scanf("%d",&n);//队员数
while(n--){
scanf("%d",&x);
team[x]=i;
}
}
for(;;){
int x;
char cmd;
scanf("%s",cmd);
if(cmd[0]=='S')break;
else if(cmd[0]=='D'){//字符串中夹带了需要处理的数字处理方式
int t=q.front();//队首团队编号
printf("%d\n",q2[t].front());//对应团队第一个队员
q2[t].pop();//出一个队员
if(q2[t].empty())q.pop();//团队编号移除(因为团队是紧挨着的)
}
else if(cmd[0]=='E'){
scanf("%d",&x);//前头输入的字符串忽略
int t=team[x];//团队编号
if(q2[t].empty())q.push(t);
q2[t].push(x);//团队来了成员
}
}
printf("\n");
}