P11080 [ROI 2019] 拍照 (Day 1)

题目背景

翻译自 [ROI 2019 D1T1](https://neerc.ifmo.ru/school/archive/2018-2019/ru-olymp-roi-2019-day1.pdf)。 参加奥林匹克竞赛的学生来自 $n$ 个地区,每个地区的代表团由 $m$ 名学生组成。每个代表团的学生穿着有自己地区特色的衣服,第 $i$ 个代表团穿的衣服颜色编号为 $i$。 摄影师决定给所有参赛者拍一张照片。为了组织拍摄照片,摄影师计划按以下方式进行操作: 舞台上有一排学生站立的位置,他们沿着舞台从 $1$ 到 $m$ 进行编号。摄影师计划轮流找一些代表团的领队,要求该代表团的几名学生上台。摄影师指定 $L$ 和 $R$ 的值,选中的代表团的学生上台并站在从第 $L$ 个到第 $R$ 个(包括 $L$ 和 $R$)的所有位置上。如果这个位置上已经站了一名学生,则将这名学生请下台,让新的学生站上来。每个代表团的领队只能被摄影师找一次。

题目描述

为了在照片上的色彩更加和谐,摄影师希望照片上应该有 $m$ 名学生,而且穿着的衣服颜色必须按照给定的顺序排列。现在他想知道如何才能得到所需的照片。 编写一个程序,根据给定的颜色顺序,确定摄影师要找的代表团编号以及他们应该占据的位置的顺序,以制作期望中的照片。如果不可能,输出 `-1`。

输入格式

第一行包含两个整数 $m$ 和 $n$。 第二行包含 $m$ 个整数 $a_1,a_2,\dots,a_m$($1\le a_i\le n$),表示摄影师希望照片上的学生衣服颜色的顺序。

输出格式

输出的第一行应包含一个整数 $k$。如果无法拍出期望的照片,则此数字应为 $-1$。否则,它应该是摄影师需要找的代表团的数量,以便拍出期望的照片。 当 $k\ne-1$ 时,接下来的 $k$ 行应按照它们应该进行的顺序输出摄影师的请求。第 $i$ 个请求由三个整数 $c_i,L_i,R_i$ 表示,其中 $c_i$ 是代表团的编号,$L_i$ 和 $R_i$ 分别是代表团 $c_i$ 的学生应该占据的舞台上第一个和最后一个位置的编号。所有 $c_i$ 必须不同。 如果有多个解决方案,可以输出其中任意一个。

说明/提示

样例 $1$ 解释: 如果按照输出中的顺序让代表团的学生上台,那么每让一个代表团的学生上台后,舞台上的学生应该是这样排列的: 1. $4\ 4\ 4\ 4\ 4\ 4\ 4$; 2. $4\ 7\ 7\ 7\ 4\ 4\ 4$; 3. $10\ 10\ 10\ 10\ 4\ 4\ 4$; 4. $10\ 5\ 5\ 10\ 4\ 4\ 4$; 5. $10\ 5\ 5\ 10\ 4\ 2\ 4$。 | 子任务 | 分值 | $m\le$ | $n\le$ | | :----------: | :----------: | :----------: | :----------: | | $1$ | $15$ | $100$ | $100$ | | $2$ | $15$ | $10^4$ | $10^4$ | | $3$ | $5$ | $3\times10^5$ | $2$ | | $4$ | $5$ | $3\times10^5$ | $3$ | | $5$ | $20$ | $3\times10^5$ | $10$ | | $6$ | $40$ | $3\times10^5$ | $3\times10^5$ |