E. Team Olympiad

    传统题 1000ms 256MiB

Team Olympiad

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

伯兰德首都的第 00 号学校有 nn 个孩子在学习。学校里的孩子都很有天赋:有些擅长编程,有些擅长数学,还有些擅长体育。因此,对于每个孩子我们知道一个值 tit_i

  • ti=1t_i = 1 表示第 ii 个孩子擅长编程
  • ti=2t_i = 2 表示第 ii 个孩子擅长数学
  • ti=3t_i = 3 表示第 ii 个孩子擅长体育(Physical Education)。

每个孩子恰好只擅长其中一门

科学十项全能奥林匹克竞赛需要由 3 名学生组成一支队伍。老师决定每支队伍由三名擅长不同学科的孩子组成,即每支队伍必须包含:

  • 1 名数学好手(ti=2t_i=2),
  • 1 名编程好手(ti=1t_i=1),
  • 1 名体育好手(ti=3t_i=3)。

并且每个孩子最多只能加入一支队伍。

请问学校最多能组建多少支队伍?并输出一种组队方案。


输入格式

  • 第一行输入一个整数 nn1n50001 \le n \le 5000)表示孩子数量。
  • 第二行输入 nn 个整数 t1,t2,,tnt_1,t_2,\dots,t_n1ti31 \le t_i \le 3),表示第 ii 个孩子擅长的学科类型。

输出格式

  • 第一行输出一个整数 ww,表示最多能组建的队伍数。
  • 接下来输出 ww 行,每行输出三个整数,表示组成该队伍的三个孩子的下标(下标从 11nn,按输入顺序编号)。

为保证输出唯一确定(便于判题平台固定输出),请按如下规则输出方案:

  1. 每支队伍按顺序输出:编程(类型1) 下标、数学(类型2) 下标、体育(类型3) 下标
  2. 队伍的输出顺序:按队伍中“编程(类型1) 下标”从小到大排序输出。

若无法组成任何队伍,则只输出一行 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

说明

最大队伍数为三类人数的最小值:

w = \min(#1,#2,#3)

其中 #x 表示类型为 xx 的孩子数量。构造时可分别取三类下标列表中前 ww 个配对组队。

1月16日练习题

未认领
状态
已结束
题目
5
开始时间
2026-1-15 0:00
截止时间
2026-1-16 23:59
可延期
24 小时