A5328. 团队全能赛
编程题
入门
知识点
题目描述
## 题目背景
学校要参加“团队全能赛”。每支队伍需要 **3 名同学**,分别擅长 **编程**、**数学**、**体育** 各一名。每个同学 **只擅长其中一项**,而且 **每个同学最多只能参加一支队伍**。
## 题目描述
共有 $n$ 名同学,第 $i$ 名同学的特长用 $t_i$ 表示:
- $t_i=1$ 表示擅长 **编程**;
- $t_i=2$ 表示擅长 **数学**;
- $t_i=3$ 表示擅长 **体育**。
请计算:最多能组成多少支由“编程 + 数学 + 体育”各一名的队伍,并给出一种可行的组队方案(写出每队 3 个同学的编号)。同学编号为 $1\sim n$,按输入顺序编号。
学校要参加“团队全能赛”。每支队伍需要 **3 名同学**,分别擅长 **编程**、**数学**、**体育** 各一名。每个同学 **只擅长其中一项**,而且 **每个同学最多只能参加一支队伍**。
## 题目描述
共有 $n$ 名同学,第 $i$ 名同学的特长用 $t_i$ 表示:
- $t_i=1$ 表示擅长 **编程**;
- $t_i=2$ 表示擅长 **数学**;
- $t_i=3$ 表示擅长 **体育**。
请计算:最多能组成多少支由“编程 + 数学 + 体育”各一名的队伍,并给出一种可行的组队方案(写出每队 3 个同学的编号)。同学编号为 $1\sim n$,按输入顺序编号。
输入格式
- 第一行:一个整数 $n$。
- 第二行:$n$ 个整数 $t_1,t_2,\ldots,t_n$(每个都在 $\{1,2,3\}$ 中)。
- 第二行:$n$ 个整数 $t_1,t_2,\ldots,t_n$(每个都在 $\{1,2,3\}$ 中)。
输出格式
- 第一行:整数 $w$,表示最多能组的队伍数。
- 若 $w>0$,接着输出 $w$ 行,每行 3 个整数,表示一支队伍中三名同学的编号(顺序任意)。
- 若无法组队($w=0$),只输出一行
- 若 $w>0$,接着输出 $w$ 行,每行 3 个整数,表示一支队伍中三名同学的编号(顺序任意)。
- 若无法组队($w=0$),只输出一行
0。输入输出样例
输入 #1
7 1 3 1 3 2 1 2
输出 #1
2 3 5 2 6 7 4
输入 #2
4 2 1 1 2
输出 #2
0
说明/提示
## 数据范围
- $1 \le n \le 5000$
- $t_i \in \{1,2,3\}$
- 每名同学最多加入一支队伍
### 样例一解释
把三类同学的编号收集起来:
- 编程($1$):$[1,3,6]$
- 数学($2$):$[5,7]$
- 体育($3$):$[2,4]$
人数分别为 $3,2,2$,所以最多可组 $2$ 支。
例如可以输出两队:$(3,5,2)$ 和 $(6,7,4)$(答案不唯一)。
### 样例二解释
没有人擅长体育($3$),无法组成“编程+数学+体育”的完整一队。
- $1 \le n \le 5000$
- $t_i \in \{1,2,3\}$
- 每名同学最多加入一支队伍
### 样例一解释
把三类同学的编号收集起来:
- 编程($1$):$[1,3,6]$
- 数学($2$):$[5,7]$
- 体育($3$):$[2,4]$
人数分别为 $3,2,2$,所以最多可组 $2$ 支。
例如可以输出两队:$(3,5,2)$ 和 $(6,7,4)$(答案不唯一)。
### 样例二解释
没有人擅长体育($3$),无法组成“编程+数学+体育”的完整一队。