24-3-6c++ stl

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");
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值