测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A5328. 团队全能赛

编程题 入门
知识点

题目描述

## 题目背景
学校要参加“团队全能赛”。每支队伍需要 **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\}$ 中)。

输出格式

- 第一行:整数 $w$,表示最多能组的队伍数。
- 若 $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$),无法组成“编程+数学+体育”的完整一队。
上一题 去做题 下一题